我对MATLAB没有经验,很抱歉新手问题:
我有一个大向量(905350 个元素),其中存储了一大堆数据。我有标准偏差和平均值,现在我想删除高于/低于平均值一个标准偏差的所有数据点。我只是不知道怎么做。根据我收集到的信息,我必须制作某种双循环?
这就像:平均标准<我想要的数据<平均+标准
您可以简单地使用按元素逻辑 AND:
m = mean(A);
sd = std(A);
B = A( A>m-sd & A<m+sd );
此外,知道: |x|<c iff -c<x<c
,您可以将两者合二为一:
B = A( abs(A-m)<sd );
将 A 作为原始向量,将 B 作为最后一个向量:
B = sort(A)
B = B(find(B > mean-std,1,'first'):find(B < mean+std,1,'last'))
y = x(x > mean-std);
y = y(y < mean+std);
应该管用。有关详细信息,请参阅查找。在上面的代码中隐式使用了 FIND 命令。