Я пытаюсь найти способ сделать цикл for, в котором я могу сравнить две ячейки, которые дадут мне два разных средства. Один для класса char, а другой для класса double.Как я могу пропустить только определенные части массива ячеек?
Это то, что у меня есть до сих пор.
V = {2; 'tree'; 3; 'hope'};
W = {2; 'tree'; 3; 'hope'};
for i = 1:length(V);
if isequal(class(V{i}), 'double')
num = V{i}
elseif isequal(class(V{i}), 'char')
str = V{i}
end
end
for i = 1:length(W);
if isequal(class(W{i}), 'double')
acc_n(i) = isequal(V{i}, W{i})
elseif isequal(class(W{i}), 'char')
acc_s(i) = strcmp(V{i}, W{i})
end
end
mean_d = mean(acc_n)
mean_s = mean(acc_s)
Выход я получаю:
acc_n =
1 0 1
acc_s =
0 1 0 1
mean_d =
0.6667
mean_s =
0.5000
Выход я хочу это:
1 1
для строки, mean = 1
. 1 1
for double, mean = 1
Как я могу сделать цикл, где он принимает только номера ячейки и слова ячейки отдельно?
Есть ли какой-либо возможный способ только прокрутить слова или цифры?
Есть ли альтернативный способ сделать это без использования cellfun? – user2924450
Также, как использовать цикл для этого? – user2924450
@ user2924450 Я думаю, что цикл будет прекрасным, поскольку 'cellfun' иногда хуже, чем циклы. См. [Здесь] (http://stackoverflow.com/questions/18284027/cellfun-versus-simple-matlab-loop-performance). См. Мое редактирование. –