I have two cell arrays of strings of varying lengths, d={'nerve','body','muscle','bone'} and e={'body','body','muscle'}. I have to compare these two arrays and count the occurrences of each string in e in d. The expected result should be a vector, count_string=(0,2,1,0). The following is the code I've written but I get the error:Cell contents assignment to a non-cell array object. I am a beginner in matlab programming. Any quick help on this is greatly appreciated.
count_string=size(d)
for i=1:length(d)
count_string{i}=sum(ismember(e{i},d));
end
After all your below suggestions, this is the module i have.
for i=1:length(d_union)
count_string1=cellfun(@(x) sum(ismember(d1,x)), d_union);
count_string2=cellfun(@(x) sum(ismember(d2,x)), d_union);
count_string3=cellfun(@(x) sum(ismember(d3,x)), d_union);
count_string4=cellfun(@(x) sum(ismember(d4,x)), d_union);
count_string5=cellfun(@(x) sum(ismember(d5,x)), d_union);
count_string6=cellfun(@(x) sum(ismember(d6,x)), d_union);
count_string7=cellfun(@(x) sum(ismember(d7,x)), d_union);
count_string8=cellfun(@(x) sum(ismember(d8,x)), d_union);
count_string9=cellfun(@(x) sum(ismember(d9,x)), d_union);
count_string10=cellfun(@(x) sum(ismember(d10,x)), d_union);
count_string11=cellfun(@(x) sum(ismember(d11,x)), d_union);
count_string12=cellfun(@(x) sum(ismember(d12,x)), d_union);
count_string13=cellfun(@(x) sum(ismember(d13,x)), d_union);
count_string14=cellfun(@(x) sum(ismember(testdoc,x)), d_union); end
My matlab compiler is taking forever to execute this module. 'd_union' is a 1x1216 cell array and each of the d1 to testdoc is approximately 1x240 cell array. I gotta calculate the cosine similarity of the vectors I get from the above operation. Is there a way to speed up the process? Please help. Thank you.