程式:
clear all
close all
clc%產生n(0,1)正態分佈的隨機雜訊
randn('seed',100);
v=randn(1,60);
%產生m序列
l=60;% 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;%m序列的幅值為5
else u(i)=5;
endy1=x1;y2=x2;y3=x3;y4=x4;
end
figure(1);
stem(u),grid on
% 遞推最小二乘辨識程式
z(2)=0;z(1)=0;
%觀測值由理想輸出值加雜訊
for k=3:60;%迴圈變數從3到15
z(k)=-1.5*z(k-1)-0.7*z(k-2)+u(k-1)+0.5*u(k-2)+0.5*v(k);
end%rls遞推最小二乘辨識
c0=[0.001 0.001 0.001 0.001]';
p0=10^3*eye(4,4);
e=0.000000005;%相對誤差
c=[c0,zeros(4,59)];%被辨識引數矩陣的初始值及大小
e=zeros(4,60);%相對誤差的初始值及大小
lamt=1;
for k=3:60;
h1=[-z(k-1),-z(k-2),u(k-1),u(k-2)]';
k1=p0*h1*inv(h1'*p0*h1+1*lamt);%求出k的值
new=z(k)-h1'*c0;
c1=c0+k1*new;%求被辨識引數c
p1=1/lamt*(eye(4)-k1*h1')*p0;
e1=(c1-c0)./c0;%求引數當前值與上一次的值的差值
e(:,k)=e1; %把當前相對變化的列向量加入誤差矩陣的最後一列
c(:,k)=c1;%把辨識引數c 列向量加入辨識引數矩陣的最後一列
c0=c1;%新獲得的引數作為下一次遞推的舊引數
p0=p1;
if norm(e1)<=e
break;%若引數收斂滿足要求,終止計算
endend%分離引數
a1=c(1,:); a2=c(2,:); b1=c(3,:); b2=c(4,:);
ea1=e(1,:); ea2=e(2,:); eb1=e(3,:); eb2=e(4,:);
figure(2);
i=1:60;
plot(i,a1,'k',i,a2,'b',i,b1,'r',i,b2,'g') %畫出辨識結果
legend('a1','a2','b1','b2');
title('遞推最小二乘引數辨識')
figure(3);
i=1:60;
plot(i,ea1,'k',i,ea2,'b',i,eb1,'r',i,eb2,'g') %畫出辨識結果的收斂情況
legend('a1','a2','b1','b2');
title('辨識精度')
結果:
在北京買房 char3
現在北京有一套房子,200萬,假設房價每年 10 乙個軟體工程師每年固定能賺40萬。如果他想買這套房子,不貸款,不漲工資,沒有其他收入,每年不吃不喝不消費,那麼他需要幾年才能攢夠錢買這套房子?include using namespace std int main double houseprice...
百錢百雞 char3
百錢百雞問題 中國古代數學家張丘建在他的 算經 中提出了著名的 百錢買百雞問題 雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問翁 母 雛各幾何?題意給定共 100錢要買百雞,若全買公雞最多買 20只,顯然 x的值在 0 20 之間 同理,y的取值範圍在 0 33 之間,可得到下面的不...
神經網路辨識系統
clc close all clear y 1 0 k 1 u k sin 2 pi k 250 f k 0.6 sin pi u k 0.3 sin 3 pi u k 0.1 sin 5 pi u k y k 1 0.3 y k f k for k 2 100 u k sin 2 pi k 250...