爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6861|回复: 9

[程序设计] 请问pettitt突变点检测代码到底怎么样的呢?我这里有三个。

[复制链接]

新浪微博达人勋

发表于 2018-12-17 16:47:54 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
第一个:
x=xlsread('D:\APP-X\SI_tem_mon_eemd.xlsx','01','A2:A35');%时间数据
y=xlsread('D:\APP-X\SI_tem_mon_eemd.xlsx','03','AM2:AM35');%SAL数据,剔除奇异点
plot(x,y);
N = length(y);
s = zeros(1,N);
for k=2:N
    r = 0;
    s(k) = 0;
    for j=1:k-1
        if y(k)>y(j)
            r = r+1;
        elseif y(k)<y(j)
            r = r-1;
        end
        s(k) = s(k-1)+r;
    end
end
kt0 = max(s);
t0 = find(s==kt0);
P = 2*exp(-6*kt0^2*(N^3+N^2));

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-12-17 16:50:08 | 显示全部楼层
第二个:
clc
clear
%Pettitt突变分析

x=xlsread('D:\APP-X\SI_tem_mon_eemd.xlsx','01','A2:A35');%时间数据
data=xlsread('D:\APP-X\SI_tem_mon_eemd.xlsx','01','AM2:AM35');%SAL数据,剔除奇异点
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-1)^3+(n-1)^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-');

figure(2);
plot(x,data);
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-12-17 16:52:09 | 显示全部楼层
第三个:
function a=pettitt(data)
[m n]=size(data);
for t=2:1:m
    for j=1:1:m
      v(t-1,j)=sign(data(t-1,1)-data(j,1));
      V(t-1)=sum(v(t-1,:));
    end
end
U=cumsum(V);
loc=find(abs(U)==max(abs(U)));
K=max(abs(U));
pvalue=2*exp((-6*K^2)/(m^3+m^2));
a=[loc; K ;pvalue];
return
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-8-1 16:26:11 | 显示全部楼层
楼主,您好,请问你做出来了这个突变分析吗,我试了你发的代码,数据加载老是出错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-3 08:10:00 | 显示全部楼层
雪雪丫 发表于 2019-8-1 16:26
楼主,您好,请问你做出来了这个突变分析吗,我试了你发的代码,数据加载老是出错

这三个代码是没有问题的,数据加载错误是读取数据的时候的问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2019-8-4 14:11:34 | 显示全部楼层
漠小北 发表于 2019-8-3 08:10
这三个代码是没有问题的,数据加载错误是读取数据的时候的问题

恩恩,我试了对的,自己文件名没改正确,谢谢楼主
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-12 20:04:22 | 显示全部楼层
楼主,您好,我想麻烦问一下第二个代码,figure(one)倒数第三行是什么意思呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-17 20:13:32 | 显示全部楼层
漠小北 发表于 2019-8-3 08:10
这三个代码是没有问题的,数据加载错误是读取数据的时候的问题

采用同一组数据,三组代码的结果一样吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-3-17 20:21:31 | 显示全部楼层
漠小北 发表于 2019-8-3 08:10
这三个代码是没有问题的,数据加载错误是读取数据的时候的问题

https://blog.csdn.net/u012111465/article/details/82017268
这里有一组数据和Python代码,
[2413.291, 2201.967, 2363.555, 2086.259, 2070.092, 2242.442, 3091.346, 1326.768, 1595.619, 1631.493, 1797.879, 2044.798, 1904.171, 1746.416, 1875.368 ,1826.619, 1853.982, 1887.834, 1802.647 ,1783.050,1925.268, 1777.375, 1970.239 ,1782.715],采用三种代码的结果一样吗?楼主试过没?与上边python代码结果是否一样?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-5 11:38:41 | 显示全部楼层
三个代码运行结果都不一样,第一个运行的p值都是0?第二个运行的p值我的数据都不显著
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表