📄 cubica34a.m
字号:
function [R,y]=cubica34a(x)
verbose=0;
[n,p]=size(x);
Q=eye(n);
R=eye(n);
%---------------中心化和白化-------------------------
if nargin==1
fprintf('\n中心化和白化!\n\n');
end
x=x-mean(x,2)*ones(1,p);
[F,d]=eig(x*x'/p);
v=diag(real(diag(d).^(-0.5)))*F';
x=v*x;
if nargin==1
fprintf('变换\n');
end
%-------------------开始变化迭代---------------------------
for t=1:(1+round(sqrt(n)))
for i=1:n-1
for j=i+1:n
%------计算累计量-----------
u=x([i j],:);
sq=u.^2;
sq1=sq(1,:);
sq2=sq(2,:);
u1=u(1,:)';
u2=u(2,:)';
c111=sq1*u1/p;
c112=sq1*u2/p;
c122=sq2*u1/p;
c222=sq2*u2/p;
c1111=sq1*sq1'/p-3;
c1112=(sq1.*u1')*u2/p;
c1122=sq1*sq2'/p-1;
c1222=(sq2.*u2')*u1/p;
c2222=sq2*sq2'/p-3;
%----------系数----------------
c_34=(1/8)*(1/6)*(3*(c111^2+c222^2)-9*(c112^2+c122^2)-6*(c111*c122+c112*c222));
c_44=(1/24)*(1/16)*(7*(c1111^2+c2222^2)-16*(c1112^2+c1222^2)-12*(c1111*c1122+c1122*c2222)-36*c1122^2-32*c1122*c1222-2*c1111*c2222);
s_34=(1/4)*(1/6)*(6*(c111*c112-c122*c222));
s_44=(1/24)*(1/32)*(56*(c1111*c1112-c1222*c2222)+48*(c1112*c1122-c1122*c1222)+8*(c1111*c1222-c1112*c2222));
%计算变换角
phi_max=(1/4)*atan2( s_34+s_44,c_34+c_44);
%-----------givens变换矩阵Qij--------------------
Qij=eye(n);
c=cos(phi_max);
s=sin(phi_max);
Qij(i,j)=s;
Qij(j,i)=-s;
Qij(i,i)=c;
Qij(j,j)=c;
Q=Qij*Q;
%----------变换估计信号y-----------------------
y([i j],:)=[c s;-s c]*u;
end
end
end
R=Q*v;
% y=R*x;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -