資源簡介
用matlab實現(xiàn)遞推最小二乘法。 源代碼。。
代碼片段和文件信息
%FLch3RLSeg3
clear%清理工作間變量
L=15;%?M序列的周期
y1=1;y2=1;y3=1;y4=0;%四個移位積存器的輸出初始值
for?i=1:L;%開始循環(huán),長度為L
????x1=xor(y3y4);%第一個移位積存器的輸入是第3個與第4個移位積存器的輸出的“或”
????x2=y1;%第二個移位積存器的輸入是第3個移位積存器的輸出
????x3=y2;%第三個移位積存器的輸入是第2個移位積存器的輸出
????x4=y3;%第四個移位積存器的輸入是第3個移位積存器的輸出
????u(i)=y4;
????%y(i)=y4;%取出第四個移位積存器幅值為“0“和“1“的輸出信號,
????%if?y(i)>0.5u(i)=-0.03;%如果M序列的值為“1“時辨識的輸入信號取“-0.03”
????%else?u(i)=0.03;%當M序列的值為“0“時辨識的輸入信號取“0.03”
????%end%小循環(huán)結(jié)束
????y1=x1;y2=x2;y3=x3;y4=x4;%為下一次的輸入信號做準備
end%大循環(huán)結(jié)束,產(chǎn)生輸入信號u?
figure(1);%第1個圖形
stem(u)grid?on%以徑的形式顯示出輸入信號并給圖形加上網(wǎng)格
z(3)=0;z(2)=0;z(1)=0;%取z的前三個初始值為零
for?k=4:15;%循環(huán)變量從4到15???
????z(k)=-1.5*z(k-1)-1.0*z(k-2)-0.5*z(k-3)-1.5*u(k-1)-0.5*u(k-2);%給出理想的辨識輸出采樣信號????
end
%RLS遞推最小二乘辨識
c0=[0.001?0.001?0.001?0.001?0.001]‘;%直接給出被辨識參數(shù)的初始值即一個充分小的實向量
p0=10^6*eye(55);%直接給出初始狀態(tài)P0,即一個充分大的實數(shù)單位矩陣
E=0.000000005;%相對誤差E=0.000000005
c=[c0zeros(514)];%被辨識參數(shù)矩陣的初始值及大小
e=zeros(515);%相對誤差
評論
共有 條評論