我对MATLAB缺乏经验,很抱歉新手问题:
我有一个大型矢量(905350元素),其中存储了大量数据.我有标准差和平均值,现在我想删除高于/低于平均值一个标准偏差的所有数据点.我不知道怎么回事.从我收集到的东西,我必须做出某种双循环?
它就像:mean-std <data i want <mean + std
如果数据是变量A,存储了平均值并存储meanA了标准差stdA,则以下内容将提取您想要的数据,同时保持数据值的原始顺序:
B = A((A > meanA-stdA) & (A < meanA+stdA));
Run Code Online (Sandbox Code Playgroud)
以下是一些有用的文档链接,涉及上面使用的概念:逻辑运算符,矩阵索引.
您可以简单地使用元素逻辑AND:
m = mean(A);
sd = std(A);
B = A( A>m-sd & A<m+sd );
Run Code Online (Sandbox Code Playgroud)
此外,知道:|x|<c iff -c<x<c,您可以将两者结合为一个:
B = A( abs(A-m)<sd );
Run Code Online (Sandbox Code Playgroud)