Mam tablicę pustych komórek i tych, które chcę przekonwertować na tablicę logiczną, gdzie puste komórki są zerami. Kiedy używam cell2mat, puste komórki są ignorowane, a ja otrzymuję macierz składającą się wyłącznie z 1, bez odniesienia do poprzedniego indeksu, który trzymali. Czy istnieje sposób wykonania tej operacji bez użycia pętli?Zamień puste komórki na logiczne 0 przed cell2mat w MATLAB
Przykładowy kod:
for n=1:5 %generate sample cell array
mycellarray{n}=1;
end
mycellarray{2}=[] %remove one value for testing
Rzeczy próbowałem:
mylogicalarray=logical(cell2mat(mycellarray));
co skutkuje [1,1,1,1] nie [1,0,1,1, 1].
for n=1:length(mycellarray)
if isempty(mycellarray{n})
mycellarray{n}=0;
end
end
mylogicalarray=logical(cell2mat(mycellarray));
który działa, ale używa pętli.
Wywołanie 'cellfun ('isempty', mycellarray)' jest znacznie szybsze niż uchwyt funkcji; 'isempty()' jest jedną z wielu funkcji korzystających z ogromnego zwiększenia prędkości, gdy jest jawnie nazwana w wywołaniu 'cellfun()'. –
Jaki jest cel '~' przed 'cellfun'? – Chad
Ah, '~' nie jest operatorem logicznym. – Chad