colordef black
clc
clear all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 最小二乘法 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=128; %样本数据长度
n=1:N ;
wn=randn(1,length(n)); %产生一个高斯白噪声
f1=0.2;
f2=0.213;
xn=sqrt(20)*sin(2*pi*f1*n)+sqrt(2)*sin(2*pi*f2*n)+wn;
plot(xn);
title('原始信号');
Rx=xcorr(xn,'biased');%x(n)的自相关函数;
p=4;
c=N+1-p:N;
r=N:N+p-1;
R=hankel(Rx(c),Rx(r)); %设置R的hankel矩阵
i=1:p;
r=Rx(N+1:N+p);
a=(-1)*(R'*R)\(R'*r');%利用最小二乘法求参数a
a(p+1,1)=1;
figure(2);
freqz(1,a,1024,1);
title('最小二乘')
% % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % % % %SVD-TLS估计%
% % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % % % N=128; %样本数据长度
% % % % % g=[];
% % % % % NT=20;%循环的次数
% % % % pe=50;
% % % % qe=50;
% % % % M=50;
% % % % % for cc=1:NT;
% % % % n=1:N ;
% % % % wn=randn(1,length(n)); %产生一个高斯白噪声
% % % % f1=0.2;
% % % % f2=0.213;
% % % % Rx=0;
% % % % xn=sqrt(20)*sin(2*pi*f1*n)+sqrt(2)*sin(2*pi*f2*n)+wn;
% % % % Rx=xcorr(xn,'biased');
% % % % for i=1:M;
% % % % for j=1:pe+1;
% % % % Re(i,j)=Rx(qe+i-j+1+N);
% % % % end
% % % % end
% % % % [U,S,V] = svd(Re) ;
% % % % for k=1:M;
% % % % if S(k,k)/S(1,1)<0.03;
% % % % S(k,k)=0;
% % % % end
% % % % end
% % % % p=rank(S);
% % % % Sp=zeros(p+1,p+1);
% % % % n=length(S(:,1))-1;
% % % % for j=1:p;
% % % % for i=1:n+1-p;
% % % % w=V(i:i+p,j);
% % % % Sp=Sp+S(j,j)^2*w*w';
% % % % end
% % % % end
% % % % Sp1=inv(Sp);
% % % % g=Sp1(2:p+1,1)/Sp1(1,1);
% % % % g=g';
% % % % g=[1,g];
% % % % % end
% % % % % %至此循环20次结束
% % % % % for i=1:p+1;
% % % % % cnt=0;
% % % % % for j=1:20;
% % % % % cnt=cnt+g(j,i);
% % % % % end
% % % % % yy(i)=cnt/20;%求循环20次的平均值
% % % % % end
% % % % freqz(1,g,1024,1);
% % % % title('SVD-TLS');
评论0