У меня есть два набора ячеек с цепочками различной длины: d = {'' нерв ',' тело ',' мышца ',' кость '} и e = {' тело ',' тело ',' мышца '}. Я должен сравнить эти два массива и посчитать вхождения каждой строки в e в d. Ожидаемый результат должен быть вектором count_string = (0,2,1,0).
Ниже приведен код, который я написал, но я получаю сообщение об ошибке: Присвоение содержимого ячейки объекту массива, не являющемуся ячейкой. Я новичок в программировании Matlab. Любая быстрая помощь в этом очень ценится.
count_string=size(d)
for i=1:length(d)
count_string{i}=sum(ismember(e{i},d));
end
После всех ваших предложений ниже, это модуль, который у меня есть.
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
Мой компилятор Matlab работает вечно, чтобы выполнить этот модуль. 'd_union' является массивом ячеек 1x1216, и каждый из d1 для testdoc составляет массив ячеек приблизительно 1x240. Я должен вычислить косинусное сходство векторов, которые я получаю от вышеупомянутой операции. Есть ли способ ускорить процесс? Пожалуйста помоги. Спасибо.