日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释)

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做關于過熱氣溫的動態建模問題。有現場運行的歷史數據,要找出導前區和惰性區的傳遞函數。

對這類算法了解不多,程序讀起來比較吃力,所以就轉來一篇完整的辨識程序,在原有基礎上進行了簡化,并稍加注解一下,也能讓有共同需要的朋友少花點時間。

function [sysd,sys,err]=ID(Y,U,Ts)

%基于遞推最小二乘法的參數辨識程序

%僅針對二階系統(工業對象大都是高階系統,用起來很復雜,所以最終還是要降階成為二階近似系統)

%Inputs: Y是模型輸出值,U是模型輸入。二者都作為辨識程序的輸入

%Outputs: sysd=離散傳函,sys=連續傳函,err=error

n=length(U);

Y=reshape(Y,n,1);?%輸出和輸入的維數肯定是要對齊的,無須多言

U=reshape(U,n,1);

theta=[0.1;0.1;0.1;0.1;0.1]?%注意這是一個5*1矩陣

P=2^25*eye(5);?%P,和theta都是遞推參數初始值,每一步遞推都會改變

R0=1;?%就是一個賦值

for?m=3:n?%遞推過程

X=[Y(m-1)

Y(m-2) U(m) U(m-1)

U(m-2)]';?%X就是遞推最小二乘法的算法公式中的Φ(k)

alfa=1/(R0+X'*P*X);?%計算因子

L=alfa*P*X;

theta(:,m-1)=theta(:,m-2)+L*(Y(m)-X'*theta(:,m-2));?%theta=θ?%每迭代一次,theta就增加一列,新增加的那一列就是最新的參數估值。

P=P/R0-alfa*P*X*X'*P;

err=Y(m)-X'*theta(:,m-2);?%計算實際輸出值和估值輸出的誤差

if?abs(err)<=1e-10

break;

end

end

m=length(theta(1,:));

result=[-theta(1:2,m);theta(3:5,m)];?%對照著算法公式就明白了

t=1:m;

figure;

plot(t,theta(1,:),t,theta(2,:),t,theta(3,:),t,theta(4,:),t,theta(5,:));

legend('th1','th2','th3','th4','th5');

num=[result(3),result(4),result(5)];

den=[1,result(1),result(2)];

sysd=tf(num,den,Ts);

[n,d]=d2cm(num,den,Ts,'tustin');

sys=tf(n,d);

輸入以下代碼即可:

Y=data(:,3);U=data(:,2);

[sysd,sys,e]=ID(Y,U,0.001);

總結

以上是生活随笔為你收集整理的函数的递推matlab,关于递推最小二乘法辨识参数的matlab编程(含注释)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。