matlab除去NaN空值,并且保证矩阵一定的形状的方法

一,起源
由于导入excel文件数据的时候,空数据部分会被NaN代替,所以我就想用一种办法删除掉这些NaN。我看见的一种办法是:b=a(~isnan(a));这种办法确实能删除NaN,但是会把原来的数组变成列向量,损坏了原来的结构。

在结构不遭破坏的基础上,删除掉NaN的位置。此方法需要保证对于每列而言,NaN所在的行索引是相同的。为保证这个条件在导入前需要观察数据分布。

二,思路及编程
假设我们要处理的矩阵是num
b=num(:,1);%取第一列b
b=b(~isnan(b));%将b中的NaN删除。
n=length(b);%统计剩下多少行,由于是第一列的缘故,不害怕它变形。
num=num(~isnan(num));%对整个矩阵num,将NaN部分删除,得到列向量
num=reshape(num,n,(length(num)/n));%重塑矩阵,它有n行,length(num)/n列

你可能感兴趣的:(Matlab专题)