加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab完成MK检验

(2017-12-28 17:44:30)
标签:

mk突变检测

for循环

matlab

分类: Matlab
MK突变检测需要,查阅资料,发现口径不一,传说中的DPS软件不能用(正版的要钱http://www/uc/myshow/blog/misc/gif/E___7395ZH00SIGG.gif)。大多数代码只能自己看图说话,找UB、UF交点作为突变点,但好多没有格网,放大都看不了,还有,作图上没有加For循环,一次画一个图,倒不是缺点,只是处理的数据多,懒,所以,根据网上说明自己修改了代码,感谢相关博主(见附录)。另,这个检测还可以用一个神奇额R包:Trend,进行相应检验。这里不详细论述。若有其他好方法请指点。
代码:
clear;clc;
Data=xlsread('AnnualIntensity_16.csv');
Year=Data(:,1);
[a,b]=size(Year);
Sig1=1.96*ones(a,b);
Sig2=-1.96*ones(a,b);
for i =1:17
Runoff=Data(:,i);
UF=MannKendall(Runoff);
Runoff2=flipud(Runoff);
UF2=MannKendall(Runoff2);
UB=-flipud(UF2);
figure(i)
plot(Year,UF,'k');
hold on
plot(Year,UB,'r');
plot(Year,Sig1,'--');
plot(Year,Sig2,'--');
xlabel('Year');
ylabel('统计量');
legend('UF','UB','α<0.05');
hold off
title={'Year','UF','UB','α','α'};
shuju=[Year UF UB Sig1 Sig2];
hold on
%hold on
grid(gca,'minor')% 画出次格网
Runoff=[] %清空数组
end;
%xlswrite('test01.xlsx',title,'Sheet1','A1');
%xlswrite('test01.xlsx',shuju,'Sheet1','A2');                                                                                                 ------------------------------分-----------------------割----------------------线---------------------------------
增加保存图像功能:
clear;clc
Data=xlsread('numofExtreme_16.csv');
StationALL=xlsread('StationID.xlsx');
Year=Data(:,1);
[a,b]=size(Year);
Sig1=1.96*ones(a,b);
Sig2=-1.96*ones(a,b);
for i =2:17
Runoff=Data(:,i);
StationID=StationALL(i-1);
UF=MannKendall(Runoff);
Runoff2=flipud(Runoff);
UF2=MannKendall(Runoff2);
UB=-flipud(UF2);
figure(i)
plot(Year,UF,'k');
hold on
plot(Year,UB,'r');
plot(Year,Sig1,'--');
plot(Year,Sig2,'--');
xlabel('Year');
ylabel('统计量');
legend('UF','UB','α<0.05');
hold off
title={'Year','UF','UB','α','α'};
%shuju=[Year UF UB Sig1 Sig2];

hold on;%hold on
grid(gca,'minor');% 画出次格网
Runoff=[]; %清空数组
savepath=['D:\Figures\EPF',num2str(StationID),'.png'];%保存路径
saveas(i,savepath);%保存为png文件
end;
%xlswrite('test01.xlsx',title,'Sheet1','A1');
%xlswrite('test01.xlsx',shuju,'Sheet1','A2');

参考:
Mann-Kendall突变检测(mk突变检测) - CSDN博客  http://blog.csdn.net/liyanzhong/article/details/41867859
科学网—matlab版本的MK程序,包含突变和趋势检验 - 张乐乐的博文  http://blog.sciencenet.cn/blog-1103122-851049.html
Mann-Kendall突变检测(mk突变检测) – MATLAB中文论坛  http://www.ilovematlab.cn/thread-246993-1-1.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有