Hi,
I want to remove cell with NaN input from a cell array. The cell array itself is a field of a structure and the structue is nested inside another cell array of (16x1).
The name of explained cell array with NaN input in my code is y_fast{i,1}.OutList. I write this command to remove NaN from it:
for i=1:length(y_fast)
y_fast{i,1}.OutList(cellfun(@(x)any(isnan(x)),y_fast{i,1}.OutList)) = [];
end
it is run without any error but it does not remove the NaN from the cell array.
why?? Could Someone help me??

 Réponse acceptée

madhan ravi
madhan ravi le 7 Sep 2019
Modifié(e) : madhan ravi le 7 Sep 2019

0 votes

S=[y_fast{:}];
ix=cellfun(@(x)any(isnan(x.OutList)),y_fast);
y_fast(ix)=arrayfun(@(x)rmfield(x,'OutList'),S(ix),'un',0)

3 commentaires

Laila Rezai
Laila Rezai le 7 Sep 2019
good answer but it give me back the following error:
Error using horzcat
Number of fields in structure arrays being concatenated do not match.
Concatenation of structure arrays requires that these arrays have the same set
of fields.
I attach y_fast.mat data here. I had to reduce the size of y_fast from 16x1 cell to 1x1 cell, because of attachment size limitation, but the all removed cells have the same structure.
for k=1:numel(y_fast)
y_fast{k}.OutList=y_fast{k}.OutList(~strcmp(y_fast{k}.OutList,'NaN'))
end
Laila Rezai
Laila Rezai le 7 Sep 2019
Thanks alot!!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Operators and Elementary Operations dans Centre d'aide et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by