У меня есть массив пустых ячеек и те, которые я хочу преобразовать в логический массив, где пустые ячейки являются нулями. Когда я использую cell2mat, пустые ячейки игнорируются, и я заканчиваю матрицей только 1, без ссылки на предыдущий индекс, который они держали. Есть ли способ выполнить эту операцию без использования циклов?Замените пустые ячейки логическими 0 до cell2mat в MATLAB
Пример кода:
for n=1:5 %generate sample cell array
mycellarray{n}=1;
end
mycellarray{2}=[] %remove one value for testing
Вещи, которые я пробовал:
mylogicalarray=logical(cell2mat(mycellarray));
что приводит к [1,1,1,1], а не [1,0,1,1, 1].
for n=1:length(mycellarray)
if isempty(mycellarray{n})
mycellarray{n}=0;
end
end
mylogicalarray=logical(cell2mat(mycellarray));
который работает, но использует циклы.
Вызов 'cellfun ('isempty', mycellarray)' намного быстрее, чем дескриптор функции; 'isempty()' является одной из нескольких функций, которые пользуются огромным увеличением скорости при явном имени в вызове 'cellfun()'. –
Какова цель '' 'перед' cellfun'? – Chad
А, '~' - логический оператор. – Chad