資源簡介
一個簡單的貝葉斯辨識matlab的程序,希望對大家有幫助。

代碼片段和文件信息
clear
L=60;?%四位移位寄存器產(chǎn)生的M序列的長度
y1=1;?y2=1;?y3=1;?y4=0;?%四個移位寄存器的輸出初始值
for?i=1:L;
????x1=xor(y3y4);?%第一個移位寄存器的輸入信號
????x2=y1;?%第二個移位寄存器的輸入信號
????x3=y2;?%第三個移位寄存器的輸入信號
????x4=y3;?%第四個移位寄存器的輸入信號
????y(i)=y4;?%第四個移位寄存器的輸出信號
????if?y(i)>0.5?u(i)=-1;?%M序列的值為“1“時辨識的輸入信號取“-1”
????else?u(i)=1;?%M序列的值為“0“時辨識的輸入信號取“1”
????end
????y1=x1;?y2=x2;?y3=x3;?y4=x4;?%為下一次的輸入信號作準(zhǔn)備
end
figure(1);?subplot(211);?stem(u)?grid?on?%畫第一個圖形的第一個子圖——M序列輸入信號
v=randn(160);?subplot(212);?%產(chǎn)生一組長度為60的正態(tài)分布隨機(jī)噪聲
plot(v)?grid?on;?%畫第一個圖形窗口的第二個子圖——隨機(jī)噪聲信號
R=corrcoef(uv);?%計算輸入信號與隨機(jī)噪聲信號的相關(guān)系數(shù)
r=R(12)?%取出并顯示互相關(guān)系數(shù)
rv=std(v)*std(v)?%計算并顯示隨機(jī)噪聲的方差
u,v??%顯示輸入信號和噪聲信號
z(2)=0;?z(1)=0;?zs(2)=0;?zs(1)=0;?%輸出采樣、系統(tǒng)實(shí)際輸出、模型輸出賦初值
zm(2)=0;?zm(1)=0;?%模型輸出賦初值
%Bayes辨識
c0=[0.001?0.001?0.001?0.001?0.001?0.001?0.001]‘;?%直接給出被辨識參數(shù)的初始值即一個充分小的實(shí)向量
p0=10^6*eye(77);?%直接給出初始狀態(tài)P0,即一個充分大的實(shí)數(shù)單位矩陣
E=0.00000000005;?%取相對誤差E<=0.000000005為停機(jī)準(zhǔn)則
c=[c0zeros(714)];?%被辨識參數(shù)矩陣的初始值及大小
e=zeros(715);?%相對誤差的初始值及大小
for?k=3:20;?%開始求K?
????z(k)=-1.5*z(k-1)+0.7*z(k-2)+u(k-1)+0.5*u(k-2)+v(k)-v(k-1)+0.2*v(k-2);?%系統(tǒng)在M序列輸入下的輸出采樣信號????
????h1=[-z(k-1)-z(k-2)u(k-1)u(k-2)v(k)v(k-1)v(k-2)]‘;?%為求K(k)作準(zhǔn)備
????x=h1‘*p0*h1+rv;
????x1=inv(x);
k1=p0*h1*x1;?%K
????d1=z(k)-h1‘*c0;?%開始求被辨識參數(shù)c
????c1=c0+k1*d1;?%辨識參數(shù)c
????zs(k)=-1.5*z(k-1)+0.7*z(k-2)+u(k-1)+0.5*u(k-2);?%系統(tǒng)在M序列輸入下的輸出響應(yīng)
????zm(k)=[-z(k-1)-z(k-2)u(k-1)u(k-2)]*[c1(1);c1(2);c1(3);c1(4)];?%模型的輸出響應(yīng)
????e1=c1-c0;?
????e2=e1./c0;?%求參數(shù)的相對變化
????e(:k)=e2;
????c0=c1;?%給下一次用
????c(:k)=c1;?%把辨識參數(shù)c?列向量加入辨識參數(shù)矩陣?
????p1=p0-k1*k1‘*[h1‘*p0*h1+1];%find?p(k)
????p0=p1;?%給下次用
????if?e2<=E?break;?%若收斂情況滿足要求,終止計算
????end?
end?
ce?z?zs?zm?%顯示被辨識參數(shù)、收斂情況、輸出采樣值、實(shí)際輸出值、模型輸出值
%分離賦值
a1=c(1:);?a2=c(2:);?b1=c(3:);?b2=c(4:);?%分離出a1、a2、b1、b2
d1=c(5:);?d2=c(6:);?d3=c(7:);?%分離出d1、?d2、?d3
ea1=e(1:);?ea2=e(2:);?eb1=e(3:);?eb2=e(4:);?%分離出a1、?a2、b1、b2的收斂情況
ed1=e(5:);?ed2=e(6:);?ed3=e(7:);?%分離出d1、?d2、?d3的收斂情況
figure(2);?%畫第二個圖形
i=1:20;
plot(ia1‘r‘ia2‘r:‘ib1‘b‘ib2‘b:‘id1‘g‘id2‘g:‘id3‘g+‘)?%畫出被辨識參數(shù)的各次估計值
title(‘Parameter?Identification?with?Recursive?Least?Squares?Method‘)?%標(biāo)題
figure(3);?%畫出第三個圖形
i=1:20;
plot(iea1‘r‘iea2‘r:‘ieb1‘b‘ieb2‘b:‘ied1‘g‘ied2‘g:‘ied2‘r+‘)?%畫出各個參數(shù)收斂情況
title(‘Identification?Error‘)?%標(biāo)題
%Response?%響應(yīng)
figure(4);?subplot(411);?%畫出第四個圖形中的第一個子圖
i=1:20;plot(izs(i)‘r‘)?%畫出被辨識系統(tǒng)在沒有噪聲情況下的實(shí)際輸出響應(yīng)
subplot(412);?%畫出第四個圖形中的第二個子圖
i=1:20;plot(iz(i)‘g‘)?%畫出被辨識系統(tǒng)輸出的采樣值
subplot(413);?%畫出第四個圖形中的第三個子圖
i=1:20;plot(izm(i)‘b‘)?%畫出模型含有噪聲的輸出響應(yīng)
subplot(414);?%畫出第四個圖形中的第四個子圖
i=1:20;plot(izmy(i)‘b‘)?%畫出模型去除噪聲后的輸出響應(yīng)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3336??2005-11-24?19:21??貝葉斯辨識.m
?-rw-r--r--???????227??2011-08-12?15:27??readme_verysource.com.txt
-----------?---------??----------?-----??----
?????????????????3563????????????????????2
評論
共有 條評論