求辛几何模态分解的matlab详细完整代码

求辛几何的matlab代码,最好能有测试的文本,谢谢

你试试看

function sgc= SGMD(x,fs,tau)
%x input a signal x,
%tau delay time
%20180611 PhD. Jin Hang in Chengdu
tel=10^-3;
[n row]=size(x);
if n<row
x=x';
n=row;
end
[a,f]=periodogram(x,[],'twosided',2^floor(log2(n)),fs);
[ca,ra]=max(a(1:end/2));
if f(ra)/fs<tel
d=floor(n/3);
else
d=floor(1.2*fs/f(ra));
end
[X,m]= Trajectorymatrix(x,d,tau);
if dd==1
dd=min(size(X));
end
A=X'*X;
%schur 分解
M=[A zeros(length(A));zeros(length(A)) -A'];
N=M^2;
[Q,T]= schur(M,'complex');
sgc=zeros(n,d);
for nn=1:d
z=Q(end/2+1:end,nn)*Q(end/2+1:end,nn)'*X';
y=zeros(n,1);

newd=min(size(z));
newm=max(size(z));
if m>d
z1=rot90(z',3);
else
z1=rot90(z,3);
end
for k=1:n
if k<=newd
y(k)=sum(diag(z1,newm-k))/k;
elseif k>newd&k<=newm
y(k)=sum(diag(z1,newm-k))/newd;
else
y(k)=sum(diag(z1,newm-k))/(n-newm+1);
end
end
sgc(:,nn)=y;
end
end

function [t,m] = Trajectorymatrix(x,d,tau)
%根据Takens嵌入定理构建的轨迹矩阵
%input
%x input a signal x,
%d embedding dimension
%tau delay time
%output
%t m*n Trajectory matrix
%20180611 PhD. Jin Hang in Chengdu
[n ,c]=size(x);
if n==1 | c==1
if c>n
x=x';
[n ,~]=size(x);
end
else
error('x isn`t Column vector')
end
cc=2;
m=n-(d-1)*tau;

if m<=0
error('Index out of matrix,Replace d or Tau')
end
t=zeros(m,d);
for kk=1:d
t(1:m,kk)=x(1+(kk-1)*tau:m+(kk-1)*tau);
end

end

不知道你需要的是不是这个,花了9.9块钱给你下载的,辛普生公式matlab代码

img