remove negative and NaN from cell array.

4 visualizaciones (últimos 30 días)
Tha saliem
Tha saliem el 1 de En. de 2018
Comentada: Tha saliem el 1 de En. de 2018
Hey
I have a cell array A
A= {NaN,-1,-1,0.8,-0.6,[],[]; NaN,NaN,0.9,1,NaN,-0.05,0.4; -1,NaN,NaN,0.7,0.2,NaN,0.79}
I want to remove negative and NaN values from all the rows and store result in a cell array like:
A{1,1}={0.8}
A{2,1}={0.9,1,0.4}
A{3,1}={0.7,0.2,0.79}
Thanks in advance.

Respuesta aceptada

Walter Roberson
Walter Roberson el 1 de En. de 2018
NoNan = @(V) V(~isnan(V));
NewA = arrayfun(@(ROWIDX) NoNan([A{ROWIDX,:}]), (1:size(A,1)).', 'Uniform', 0);
  2 comentarios
Walter Roberson
Walter Roberson el 1 de En. de 2018
I did not explicitly take empty into account, but the [A{ROWIDX,:}] will effectively discard empty matrices.
Tha saliem
Tha saliem el 1 de En. de 2018
Yes very efficient method. Thank You so much

Iniciar sesión para comentar.

Más respuestas (1)

KSSV
KSSV el 1 de En. de 2018
A= {NaN,-1,-1,0.8,-0.6,[],[]; NaN,NaN,0.9,1,NaN,-0.05,0.4; -1,NaN,NaN,0.7,0.2,NaN,0.79} ;
% Replace empty cells with NaN's
idx = cellfun('isempty',A) ;
A(idx) = {NaN} ;
% convert to matrix
B = cell2mat(A) ;
iwant = cell(size(B,1),1) ;
for i = 1:size(B,1)
T = B(i,:) ;
T = T(~isnan(T)) ;
iwant{i} = T(T>0) ;
end
  1 comentario
Tha saliem
Tha saliem el 1 de En. de 2018
Thank you so much for helping. This is also a good approach.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by