⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leastsquarea.m

📁 least square estimation of system identification
💻 M
字号:
%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
%%%%%%%%%% SYSTEM IDENTIFICATION %%%%%%%%%%
%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
close all 
clear all
%*********************************************
%%%%%   INPUT OF FIVE SINUSIODES   %%%%%%%%
%*********************************************
n=1:100;
U=0;
for i=1:5;
U=U+5*sin(i*0.1*pi*n);
end
N=length(U);                         %% N
%*********************************************
%%%%% UNKNOWN FIR FILTER COEFFICIENTS %%%%%%%%
%*********************************************
Wo=fir1(10,0.5);
length(Wo);                         %% M
%*********************************************
%% AWGN WITH ZERO MEANS AND DEFERRENT VARAINCE 
%*********************************************
E_noise=1*randn(1,100);
var(E_noise);
length(E_noise);                    %% N
%*********************************************
%%%%%   UNKNOWN SYSTEM RESPONSE   %%%%%%%%
%*********************************************
Y=filter(Wo,1,U);
length(Y);                          %%% N
[h w]=freqz(Y);
%*********************************************
%%%%%   DESIRED SIGNAL RESPONSE     %%%%%%
%*********************************************
D_desire=Y+E_noise;
length(D_desire);                   %%% N
%*********************************************
%%%%%   PLOTTING OF DESIRED VERSUS OUTPUT  %%%
%*********************************************
figure(1)
plot(1:100,[Y;E_noise;D_desire])
legend('output of unknown system','noise with 0.1 var','desired response')
%*********************************************
%*********************************************
%%%%%LEAST SQUARE ADAPTIVE FILTER%%%%%%%%
%*********************************************
%*********************************************
M=input('estimated filter order');
%********************************************
%%%%%%% COVARIANCE METHOD %%%%%%%%%%%%%%%%%%%
%********************************************
for m=1:M
    for n=1:N-M+1
        A_hermit(m,n)=U(M-m+n);
    end
end
%A_hermit=A_hermit(:,1:N-M+1);
length(A_hermit);                  %% N-M+1
%*******************************************
%%%% TIME AVERAGE CORRELATION MATRIX  %%%%%%
%*******************************************
Phi_autocor=A_hermit*A_hermit';   
length(Phi_autocor);                %% M
%*******************************************
%%%%%%%%%% DESIRED VECTOR %%%%%%%%%%%%%%%%%%
%*******************************************
D_vec_hermit=D_desire(1,M:N);   
length(D_vec_hermit);              %% N-M+1
%*******************************************
%%%%%%% CROSS CORRELATION MATRIX  %%%%%%%%%%
%*******************************************
Z_crosscor=A_hermit*D_vec_hermit';  
length(Z_crosscor);                 %%%% M
%*******************************************
%%%%%%%%%%%%%% EQ 8.36 & EQ 8.39 %%%%%%%%%
%*******************************************
inv_Phi=inv(Phi_autocor);
W_hat=inv_Phi*Z_crosscor;                       %%%% tap wiegth of linear adaptive filter
length(W_hat);
D_energy=D_vec_hermit*D_vec_hermit';            %%% desired response enegy
Est_energy=Z_crosscor'*W_hat;                   %%% estimated respomse enegy    
E_minsq=D_energy - Est_energy;                    %%%% Minimum mean square error
W_hat_norm=norm(W_hat);                           %%%% length of the solution of least square
D_est=filter(W_hat,1,U);                        %%%% desired estimate response
length(D_est);                      %%% N
D_est_1=D_est(1,1:N-M+1)'; 
D_desire1=D_desire(1,1:N-M+1);
%*****************************************
%%%%% projection operator  %%%%%%%%%%%%
%******* EQ 8.51 ********************
%*****************************************
P_opt=A_hermit'*inv_Phi*A_hermit;
length(P_opt);                   %% N-M+1
P_orthognl=eye(N-M+1)-P_opt;
D_est1=P_opt*D_vec_hermit';
length(D_est1);                  %%% N-M+1
E_min_1=P_orthognl*D_vec_hermit';
length(E_min_1);                 %% N-M+1
%*****************************************
%%  SINGULAR VALUE DECOMPOSITION  %%%%%%
%****    PSEUDO INVERSE EQ 8.101  ********
%*****************************************
A_sdinv=inv_Phi*A_hermit;
W_hat_sdinv=A_sdinv*D_vec_hermit';
length(W_hat_sdinv);             %%% M
W_sdinv_norm=norm(W_hat_sdinv);
%*****************************************
%%%%%    SVD THOEREM EQ 8.132 %%%%%%%%%%
%*****************************************
A=A_hermit';
[U,D,V]=svd(A);
D_rank=rank(D);
D1=D(1:D_rank,1:D_rank);
inv_D=inv(D1);
W=length(inv_D);
K=N-M+1;
S=[inv_D zeros(W,M-W);zeros(K-W,W) zeros(K-W,M-W)];
length(S);
length(V);
length(U);
A_sdinv=V*S'*U';
W_hat_svd=A_sdinv*D_vec_hermit';
length(W_hat_svd);             %%% M
D_est_svd=filter(W_hat_svd,1,U);
length(D_est_svd);
D_est_svd=D_est_svd(1:N-M+1,1);
E_min=D_desire1'-D_est_svd;
W_svd_norm=norm(W_hat_svd);
%*****************************************
%%%%%   Orthogonality theorem   %%%%%%%%
%*****************************************
for k=0:M-1
    for i=M:N-M+1
        Vec_orth=U(i-k)*E_min_1(i);
    end
end
Vec_orth
%*****************************************
%% PLOTTING OF ESTIMATED VERSES DESIRED %%
%*****************************************
figure(2)
plot(1:N-M+1,[D_desire1',D_est1,E_min_1])
legend('Desired','Estimated with 1 var','error')



   



⌨️ 快捷键说明

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