MATLAB 排除超出 1 个标准差的数据
题
我对 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 了解更多详情。查找命令被隐式地使用在上面的代码。
不隶属于 StackOverflow