removing NaN values from mat file

10 visualizzazioni (ultimi 30 giorni)
kH
kH il 10 Ott 2019
Modificato: Stephen23 il 11 Ott 2019
I have mat file with 6778 x1 variables(signals ) but in some variables NaN value in the row must be delete .
How to check the NaN values in the mat file and delete the rows of the NaN values ?
  2 Commenti
kH
kH il 11 Ott 2019
Eg :
X.mat file contains 600x1 varibles (signals)
Let
field values dimension
signal 1 [NaN ;NaN;0;0;0] 5x1
signal 2 [NaN ;NaN;3;0;5] 5x1
signal 3 [NaN ;NaN;0;3;0] 5x1
signal 4 [NaN ;NaN;2;0;0;9;8] 7x1
signal 5 [NaN ;NaN;0;1;0] 5x1
signal 6 [NaN ;NaN;0;0;6] 5x1
output :
signal 1 [0;0;0] 3x1
signal 2 [3;0;5] 3x1
signal 3 [0;3;0] 3x1
signal 4 [2;0;0;9;8] 5x1
signal 5 [ 0;1;0] 3x1
signal 6 [0;0;6] 3x1
how to obtain the above output ?
Stephen23
Stephen23 il 11 Ott 2019
Modificato: Stephen23 il 11 Ott 2019
"I have mat file with 6778 x1 variables..."
This is not clear: does the .mat file contain:
  • 6778 separate variables (of unknown size), or
  • 1 variable of size 6778x1 ?

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 11 Ott 2019
Modificato: Stephen23 il 11 Ott 2019
load into an output variable (which is a scalar structure), then loop over the fields:
For example:
S = load('NameOfYourFile.mat');
C = fieldnames(S);
for k = 1:numel(C)
M = S.(C{k});
M(isnan(M)) = [];
S.(C{k}) = M;
end
If required, save again using the -struct option:
save('NameOfNewFile.mat','-struct','S')

Più risposte (1)

Rik
Rik il 10 Ott 2019
A(isnan(A))=[];
  1 Commento
kH
kH il 11 Ott 2019
But how to do it for complete Mat file . This method works for indiviual varibles only .

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by