removing NaN values from mat file

7 views (last 30 days)
kH
kH on 10 Oct 2019
Edited: Stephen23 on 11 Oct 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 Comments
kH
kH on 11 Oct 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 on 11 Oct 2019
Edited: Stephen23 on 11 Oct 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 ?

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 11 Oct 2019
Edited: Stephen23 on 11 Oct 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')

More Answers (1)

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

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!