如何在MATLAB中有效地找到3-sigma范围外的相关和丢弃点?

Laz*_*zer 4 statistics matlab correlation

我有一个m.txt看起来像这样的数据文件(有更多的点):

286.842995
3.444398
3.707202
338.227797
3.597597
283.740414
3.514729
3.512116
3.744235
3.365461
3.384880
Run Code Online (Sandbox Code Playgroud)

一些值(例如338.227797)与我通常期望的值(较小的数字)非常不同.

  • 所以,我在想我将删除所有不在其中的点3-sigma range.我怎么能在MATLAB中做到这一点?

  • 此外,更大的问题是该文件有一个t.txt与之关联的单独文件,它存储这些数字的相应时间值.所以,我还必须从t.txt文件中删除相应的时间值.

我还在学习MATLAB,我知道有一些好方法可以做到这一点(比存储m.txtt.txt文件中删除的元素的索引更好,然后从文件中删除这些元素)

Nzb*_*buu 7

@Amro很接近,但FIND是不必要的(查找逻辑下标),你需要包含真正的+/- 3西格玛范围的均值.我会选择以下内容:

%# load files 
m = load('m.txt'); 
t = load('t.txt'); 

%# find values within range
z = 3;
meanM = mean(m);
sigmaM = std(m);
I = abs(m - meanM) <= z * sigmaM;

%# keep values within range
m = m(I);
t = t(I); 
Run Code Online (Sandbox Code Playgroud)

  • 反转I中的不等式并保持所需的值可能更自然,即`I = abs(m - meanM)<z*sigmaM; M = M(I); t = t(I);` (3认同)