MATLAB 排除超出 1 个标准差的数据
我对 MATLAB 缺乏经验,很抱歉提出这个新手问题:
我有一个大向量(905350 个元素),其中存储了一大堆数据。 我有标准差和平均值,现在我想删除高于/低于平均值一个标准差的所有数据点。 我只是不知道怎么做。根据我收集的信息,我必须做某种双循环?
就像:mean-std <我想要的数据 <平均值+标准差
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果数据位于变量
A
中,平均值存储在meanA
中,标准差存储在stdA
中,则以下命令将提取数据您希望同时保持数据值的原始顺序:以下是一些有用的文档链接,涉及上面使用的概念:逻辑运算符, 矩阵索引。
If the data is in variable
A
, with the mean stored inmeanA
and the standard deviation stored instdA
, then the following will extract the data you want while maintaining the original order of the data values:Here are some helpful documentation links that touch on the concepts used above: logical operators, matrix indexing.
您可以简单地使用逐元素逻辑与:
此外,知道:
|x|,您可以将两者合并为一个作为:
You can simply use the Element-wise logical AND:
Also, knowing that:
|x|<c iff -c<x<c
, you can combine both into one as:以 A 作为原始向量,B 作为最终向量:
Taking A as your original vector, and B as the final one:
应该有效。有关更多详细信息,请参阅查找。上面的代码中隐式使用了 FIND 命令。
should work. See FIND for more details. The FIND command is being used implicitly in the above code.