g_p_mainmm.m

来自「用于计算G-P关联维;和一些相关参数。并能确定最佳的嵌入维数;不是很成熟;希望各」· M 代码 · 共 95 行

M
95
字号
%^^^^^^^^^^^^^^^^^^G--P法求时间序列的最佳嵌入维数主函数^^^^^^^^^^^^^^^^^^^^^
clear all;
clc;
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r0=5e-2;            % attentian 
rn=1;

nn=100;            %控制轨道的变化步长0-10,200
hr=(rn-r0)/nn;
r=r0:hr:(rn-hr);  

tic
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
load('D:\researchdata\S.mat');
h=1*1e-12;

xn=S(1,50001:55000);
maxS=max(xn);
xn=xn./maxS;
% xxn=xn(50001:55000);
N=length(xn);
St=1/h;
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%^^^^^^^^^^^^^^^^^^^^时间序列的功率谱分析^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Y=fft(xn);
Nn=length(Y);
L=round(Nn/2);
Y(1)=[];
power=abs(Y(1:L)).^2;
nyquist=1/2;
freq=nyquist*(1:L)/L*St;
period=1./freq;
[mp,index]=max(power);
avrpa=period(index)/h;    %关于轨道的平均周期不是时间
avrpa=round(avrpa)
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
J=jjautoc2(xn);                       %时序最佳时延,调用函数获得
J
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
m0=2; mn=15;            %^^^^^^^^^^^最大嵌如维数^^^^^^^^^^^^^^^^^^^^^^^^^^
mm=mn-m0+1;
rrr=zeros(mm,nn);
dm=zeros(1,mm);
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
for m=m0:mn
    m
    %^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    M=N-(m-1)*J;
    xnxn=zeros(M,m);
    for i=1:M
        j=1:m;
        xnxn(i,:)=xn(i+(j-1)*J);
    end
    %^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    distance=zeros(M,M);   
    for i=1:M
        for j=1:M
            distance(i,j)=norm((xnxn(i,:)-xnxn(j,:)),2);
        end
    end
    %^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    distance2=zeros(M,M);
    ooo=zeros(M,M);
    for ij=1:nn
        distance2=r(1,ij)-distance;
        ooo=distance2>=0;
        rrr(m-m0+1,ij)=sum(sum(ooo))/(M*M);
    end
    clear distance distance2 xnxn
    %^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
end              
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
r=log(r);
rrr=log(rrr);

figure(3);
for m=1:(mn-m0+1)
    plot(r,rrr(m,:));hold on;
end
hold off;
xlabel('lnr');ylabel('lnrrr');
%^^^^注意:不同的潜入为数时,拟合的范围不同,要根据图形3的结果确定^^^^^^^^^^^^
for i=1:mm
    [hk,hj1]=min(abs(rrr(i,:)-(-3.5)));    % attentian  below limit
    [hk,hj2]=min(abs(rrr(i,:)-(-1.5)));    % attentian  up limit
    p1=polyfit(r(hj1:hj2),rrr(i,hj1:hj2),1);
    dm(i)=p1(1);
end
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
figure(4);
mx=m0:mn;
plot(mx,dm);xlabel('m');ylabel('dm');
dm
toc

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?