MATLAB删除NaN缺失数据和离群数据,删除行和列
1、第一步:首先我们需要对矩阵或数组的基本操作有所了解,知道矩阵或数组的创建和运算及索引等,以便于理解后面的操作。下面还是先带大家把矩阵基础知识过一遍,我们在命令窗口中输入代码:
a=[2 3 6 3;1 4 2 3;6 7 9 4;3 4 2 1]
即可创建一个4行4列的矩阵或数组,如下图所示。元素间可用空格或逗号,行间用分号。

2、第二步:创建好矩阵或数组后就可以对矩阵进行索引等操作,索引有精确索引,需完全确定行列位置,如输入代码:
a(3,2)
即可索引出第3行第2列的元素7。
可以索引某一行或某一列,输入代码:
a(3,:)
a(:,2)
即可分别索引出第3行,第2列的元素,程序运行结果如下图所示。

3、第三步:知道了数组或矩阵创建和索引,那么顺便教下大家矩阵运算和赋值,矩阵有转置,加减乘除等运算,转置的话在矩阵后面加一撇'就行,下面我们进行运算和赋值,我们在命令窗口中输入代码:
b=(a(1,2) + a(2,2) - a(3,2)) *a(3,4)/a(4,1)
即可进行矩阵运算并赋值给变量b,运行结果如下图所示。

4、第四步:知道了基本矩阵运算操作后,下面讲重点了,我们先来对矩阵或数组进行行删除操作,MATLAB删除矩阵某行的话,只需将某行赋值为空即可,如我们在命令窗口中输入代码:
a(2,:)=[]
即可删除矩阵a中第二行,运行结果如下图所示。

5、第五步:下面我们删除矩阵或数组中的某列,同理,我们在命令窗口中输入代码:
a(:,2)=[]
即可删除矩阵a中第2列。
我们输入代码:
a(:,1:3)=[]
即可删除第一列到第三列的数据,运行结果如下图所示。

6、第六步:下面我们来甄别并删除矩阵或数组中的NaN缺失空数据,我们首先创建一个包含NaN缺失空数据的矩阵或数组,然后删除NaN缺失空数据,在命令窗口中输入代码:
a = [1.1 1.3 1.3 1.4 NaN 1.3 1.7 1.3 6.1 1.7 1.5 2.1 1.7 1.2];
b = a(isfinite(a))
即可删除NaN中的缺失空数据,运行结果如下图所示。

7、第七步:此外我们还可以看到矩阵或数组中有些数据是明显离群的,比如其中数据6.1,我们想将其删除怎么办,当然我们不可能通过肉眼判断并删除,我们需要用程序解决,我们在命令窗口中输入代码:
c= b(abs(b-mean(b)) <= 3*std(b))
即可删除离群数据6.1,运行结果如下图所示。
