How to remove Nans from matrix
Show older comments
I have a matrix (size 123317x6), and every 128 rows I have 3 nans on the last three columns of that thoses rows. Now what I want to do is remove all the NaNs completely without removing that row or column (just the NanNs) The data on the next row then needs to be moved up to where the Nans were. I will give you a quick example.
so I want this matrix:-
M=
1 3 6 nan nan nan 4 5 4 1 3 4 1 2 2 6 3 1 1 3 4 nan nan nan 3 4 5 6 7 8
M=
1 3 6 4 5 4 1 3 4 1 2 2 6 3 1 1 3 4 3 4 5 6 7 8
Hope this example explains what I want better!
Any help would be greatly appreicated.
Accepted Answer
More Answers (3)
Andrei Bobrov
on 10 Sep 2013
Edited: Andrei Bobrov
on 10 Sep 2013
out = resM(M==M)
ADD
M1 = M';
out = reshape(M1(M1==M1),size(M,2),[])';
Geert
on 10 Sep 2013
If it are exactly 3 NaN's per row, you could do something like this:
M = [1 3 6 nan nan nan 4 5 4 1 3 4 1 2 2;
6 3 1 1 3 4 nan nan nan 3 4 5 6 7 8];
M_new = zeros(size(M,1), size(M,2)-3);
for ii = 1:size(M,1)
M_new(ii,:) = M(ii,~isnan( M(ii,:)));
end
Ian
on 15 Sep 2013
0 votes
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!