matlab - que - isempty php
Reemplace las celdas vacías con 0 lógicos antes de cell2mat en MATLAB (2)
Si sabe que la matriz de celdas solo contendrá una y []
(que representan sus ceros), puede usar la función cellfun
para obtener un índice lógico de las celdas vacías, luego anule el vector de índice:
mylogicalarray = ~cellfun(@isempty, mycellarray);
% Or the faster option (see comments)...
mylogicalarray = ~cellfun(''isempty'', mycellarray);
Si sus celdas aún pueden contener valores cero (no solo []
), puede reemplazar las celdas vacías con 0 utilizando primero la función cellfun
para encontrar un índice para las celdas vacías:
emptyIndex = cellfun(''isempty'', mycellarray); % Find indices of empty cells
mycellarray(emptyIndex) = {0}; % Fill empty cells with 0
mylogicalarray = logical(cell2mat(mycellarray)); % Convert the cell array
Tengo una matriz de celdas vacías y unas que quiero convertir en una matriz lógica, donde las celdas vacías son ceros. Cuando uso cell2mat, las celdas vacías se ignoran, y termino con una matriz de solo 1, sin referencia al índice anterior que tenían. ¿Hay alguna manera de realizar esta operación sin usar bucles?
Código de ejemplo:
for n=1:5 %generate sample cell array
mycellarray{n}=1;
end
mycellarray{2}=[] %remove one value for testing
Cosas que he probado:
mylogicalarray=logical(cell2mat(mycellarray));
lo que resulta en [1,1,1,1], no [1,0,1,1,1].
for n=1:length(mycellarray)
if isempty(mycellarray{n})
mycellarray{n}=0;
end
end
mylogicalarray=logical(cell2mat(mycellarray));
que funciona, pero utiliza bucles.
mycellarray( cellfun(@isempty, mycellarray) ) = {0};
mylogicalarray = logical(cell2mat(mycellarray));