更改数据数组中的检测

时间:2015-10-26 17:53:03

标签: matlab image-processing

我有一个名为test.xlsx的文件,其链接可以在下面找到。它的图是diagram

根据该图,在第62点之后,该图有向上移位。有没有办法通过图像处理来识别这一点?

我在MATLAB中使用medfilt1(list,5)link)使用不同大小的窗口,但结果并不好。

你能给我任何建议或评论吗?

https://drive.google.com/file/d/0B5QzBOKhSsdgY3Juc3BlaDVuaTA/view?usp=sharing

2 个答案:

答案 0 :(得分:0)

请参阅下面的代码。该代码使用ztest在数据的移动平均值(index-k:index)和数据(index)之间进行统计比较。 ztest的链接是hereztest测试零假设data(index) = mean(data(index-k:index))。如果ztest返回h=1,则拒绝原假设,结束data(index) <> mean(data(index-k:index))。对于您的数据,ztest会检测到升档或降档w.r.t.指定的alpha级别。

尝试使用您的数据代码。使用alpha=0.05,代码可以检测index = 48index = 66处的更改。这些是发生升档(或降档)的位置。请注意,您所描述的升档发生在index=66而不是index=62,正如您所说的那样。

另外,请尝试使用不同的alphak值。

data=xlsread('test.xlsx');
m = length(data);

start_index = 11;
alpha = 0.05;
k = 10;

h_array = zeros(length(data),1);

for index = start_index:m
    avg = mean(data(index-k:index));
    stdev = std(data(index-k:index));
    if index > start_index        
        val = data(index);
        h = ztest(val,avg,stdev,'alpha',alpha);
        h_array(index) = h;
    end
end

答案 1 :(得分:-1)

只需将存储的功能用于此目的

detrend(list);