Filter löschen
Filter löschen

remove negative and NaN from cell array.

3 Ansichten (letzte 30 Tage)
Tha saliem
Tha saliem am 1 Jan. 2018
Kommentiert: Tha saliem am 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.

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by