📄 chafen.m
字号:
function [ w ] = ChaFen( TimeSeries,dMax )%UNTITLED1 Summary of this function goes here% Detailed explanation goes herex=TimeSeries;% 计算时间序列的长度len=length(x);%平稳性分析,确定差分次数d%判断序列是否为平稳序列,是,则不变,不是则进行差分,直至差分后的序列是平稳的d=0; %初始化差分次数为0%用w表示差分后的平稳时间序列w=x; %初始化for i=1:dMax flag = stationary(w); % 判断是否平稳,平稳flag=1 if flag==0 %不平稳 temp=zeros(1,len); for j=(i+1):len temp(j)=w(j)-w(j-1); end w=temp; d=d+1; else %平稳 break; endendfunction flag = stationary(timeSeries)%平稳性判断函数%平稳序列满足均值方差与t无关,自相关函数与起始时间无关只与时间间隔有关%根据游程法判断数据是否是平稳的,如果是平稳过程,flag=1;反之则flag=0;%初始化flag=0;N1=0;N2=0;Num_ych=1; %正符号数N1,负符号数N2,游程数Num_ych;E_ych=0;V_ych=0;T_Z=0;mean_timeSeries=mean(timeSeries); %求平均值flen=length(timeSeries);for i=1:1:flen; if timeSeries(i)>=mean_timeSeries; N1=N1+1; else N2=N2+1; end if i>1&&((timeSeries(i)>=mean_timeSeries&&timeSeries(i-1)<mean_timeSeries)||(timeSeries(i)<mean_timeSeries&&timeSeries(i-1)>=mean_timeSeries)); Num_ych= Num_ych+1; endendE_ych=1+2*N1*N2/(N1+N2);V_ych=sqrt(2*N1*N2*(2*N1*N2-(N1+N2))/((N1+N2)*(N1+N2)*(N1+N2-1)));T_Z=(Num_ych-E_ych)/(2*V_ych);if abs(T_Z)<=1.96 flag=1; %平稳else flag=0; %不平稳end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -