function ker = string_kernel_brute(s,t) SS1 = all_subseq(s); SS2 = all_subseq(t); CAP = intersect(SS1,SS2) ker = length(CAP); return function S = all_subseq(s) n = length(s); POWSET = list_all_ind(repmat([2],[n 1]))-1; S = repmat({s},size(POWSET,1),1); for j = 1:length(S) S{j} = s(find(POWSET(j,:))); end S = unique(S); return function ker = string_kernel_brute_old(s,t) SS1 = all_subseq(s); SS2 = all_subseq(t); ASS = union(SS1,SS2); %ISS = intersect(SS1,SS2) N1 = str_stats(ASS,SS1); N2 = str_stats(ASS,SS2); N1 = ~~N1; N2 = ~~N2; ker = sum(N1.*N2); %ker = length(intersect(SS1,SS2)); return function S = all_subseq_old(s) S = {}; for i=1:length(s) x = s(i); S1 = S; %S1{end+1} = ''; S1 = [{''} S1]; for j=1:length(S1) u = S1{j}; ux = [u x]; %if isempty(strmatch(ux,S,'exact')) S{end+1} = ux; %end end end return function N = str_stats(U,V) %function [U,N] = str_stats(V) %U = unique(V); N = zeros(length(U),1); for j=1:length(U) N(j) = length(strmatch(U{j},V,'exact')); end return