- 积分
- 21213
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-7-30
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2018-9-26 10:51:08
|
显示全部楼层
我忘记以前的代码了,写论文就用过一次,感觉挺好的呀。你要不试一试这个
%% function [Ut,chg_point]=pettitt_change(x,data)
% Pettitt test for detection of change point
A=xlsread('shuju2008.xlsx');
x=A(:,1); % 时间
data=A(:,2);% 年平均气温
n=length(data);
s=0;
Ut=zeros(n-1,1);
for i=1:n-1;
for j=i+1:n;
s=s+sign(data(i)-data(j));
end
Ut(i)=s;
end
Kmax=max(abs(Ut));
chg_point=find(abs(Ut)==Kmax);%找出最大值对应的序列号
coef=2*exp(-6*Kmax^2/(n^3+n^2));
figure(1)
hold on
plot(x(1:n-1),Ut,'K-','linewidth',1.5);%画出整个曲线的变化趋势
plot([x(chg_point),x(chg_point)],[-Kmax,Kmax],'r--','linewidth',1.5);%画出该竖线即为突变点
Klim=Kmax-Kmax*0.1;
plot([x(1),x(n)],[-Klim,-Klim],'b-');
plot([x(1),x(n)],[Klim,Klim],'b-'); |
|