remove negative and NaN from cell array.

2 vues (au cours des 30 derniers jours)
Tha saliem
Tha saliem le 1 Jan 2018
Commenté : Tha saliem le 1 Jan 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.

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 1 Jan 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 commentaire
Tha saliem
Tha saliem le 1 Jan 2018
Thank you so much for helping. This is also a good approach.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Cell Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by