系統辨識char3_2——最小二乘辨識程序_matlab

clear all
close all
clc
randn('seed',100)
v=randn(1,16); %產生一組16個N(0,1)的高斯分佈的隨機噪聲
% M序列產生程序
L=15;% M序列的週期
y1=1;y2=1;y3=1;y4=0;%四個移位積存器的輸出初始值
for i=1:L;
    x1=xor(y3,y4);
x2=y1;
x3=y2;
    x4=y3;
    y(i)=y4;
    if y(i)>0.5,u(i)=-5;
    else u(i)=5;
    end
    y1=x1;y2=x2;y3=x3;y4=x4;
end
figure
stem(u),grid on
title('輸入信號M序列')
% 最小二乘辨識程序 
z=zeros(1,16); %定義輸出觀測值的長度
for k=3:16 
    z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+1*v(k); %觀測值
end
figure(2)
plot([1:16],z)
title('輸出觀測值')
figure(3)
stem(z),grid on
title('輸出觀測值z的經線圖形')
%給樣本系數矩陣
H=[-z(2) -z(1) u(2) u(1);-z(3) -z(2) u(3) u(2);-z(4) -z(3) u(4) u(3);-z(5) -z(4) u(5) u(4);-z(6) -z(5) u(6) u(5);-z(7) -z(6) u(7) u(6);-z(8) -z(7) u(8) u(7);-z(9) -z(8) u(9) u(8);-z(10) -z(9) u(10) u(9);-z(11) -z(10) u(11) u(10);-z(12) -z(11) u(12) u(11);-z(13) -z(12) u(13) u(12);-z(14) -z(13) u(14) u(13);-z(15) -z(14) u(15) u(14)];
%給出樣本觀測矩陣
Z=[z(3);z(4);z(5);z(6);z(7);z(8);z(9);z(10);z(11);z(12);z(13);z(14);z(15);z(16)] 
%計算參數
c=inv(H'*H)*H'*Z;
%分離參數
a1=c(1), a2=c(2), b1=c(3), b2=c(4)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章