Matlab系統辨識


建立系統的數學模型

(1)使用tf函數建立傳遞函數模型

對於下面這個傳遞函數:

第一種模型建立方式:

num = [12 15]
den = [1 16 64 192];
G = tf(num, den)

其中num為分子多項式的系數,den為分母多項式的系數。

第二種模型建立方式:

s = tf('s');
G = (12*s+15)/(s^3+16*s^2+64*s+192)

代碼s = tf('s');表示用s這個變量來代表一個拉什算子s

對於一個帶有時延的傳遞函數模型,也可以使用tf函數來進行設置:

G = tf(1,[1 1],'inDelay',5)

通過設置tf函數的'inDelay'參數為5,建立了一個帶有5秒延時的系統:

也同樣可以使用s = tf('s');的方式進行建立:

G = exp(-5*s)/(s+1)

另外,有時候分子或分母的多項式是多項式相乘的形式,比如下面的這個傳遞函數:

這時可直接使用卷積函數(conv)來簡化建立過程:

num = [1 2 3];
den = conv([1 0 3 4],[1 2]);
G = tf(num,den)

(2)使用zpk函數建立傳遞函數模型(零極點模型)

對於下面這個傳遞函數:

z = [-5 -5];
p = [-1 -2 -2-2*i -2+2*i];
k = 4;
G = zpk(z,p,k)

會在matlab中得到這樣的傳遞函數:

其中復數零極點會被自動乘起來,因為在matlab中無法顯示復數的i或j。

使用函數pzmap繪制零極點:

pzmap(G)

繪制結果如下圖所示:

(3)傳遞函數模型間的變換

已知傳遞函數獲得模型的零極點向量:

G = tf([7 2 8],[4 12 4 2]);
[z,p,k] = zpkdata(G,'v')

使用函數zpkdata,傳入系統的傳遞函數模型,其中'v'表示用向量的形式進行表示。

輸出的結果如下:

進而可以得到系統的零極點模型:

G1 = zpk(z,p,k)

(4)使用ss函數建立狀態空間模型

對於如下的狀態空間模型:

使用ss函數在matlab中建立模型:

A = [6 5 4; 1 0 0; 0 1 0];
B = [1 0 0]';
C = [0 6 7];
D = 0;
G = ss(A,B,C,D)

(5)狀態空間模型與傳遞函數模型之間的轉換

對於上一小節建立的狀態空間模型,直接使用tf函數轉化為傳遞函數模型:

G1 = tf(G)

反之,也可以使用ss函數將傳遞函數模型轉換回狀態空間模型:

G2 = ss(G1)

但是需要注意的是,我們將一個模型使用tf函數轉換為傳遞函數模型之后,再使用ss函數將其轉換回狀態空間模型,可能會與原模型不太一樣。
這是因為在matlab中,默認會將系統轉化為一個能觀型的狀態空間模型,而不是我們平時會寫成的能控標准型的形式(可以自己寫一個函數來實現它)。


最小二乘參數辨識方法

(1)系統辨識基礎

辨識問題分為模型結構辨識和參數辨識,其中模型結構辨識會用到《數值分析》課程中的方法。當系統模型結構根據工程經驗或采用模型結構的辨識方法確定后,主要的問題就是模型的參數估計。

系統辨識的主要內容和步驟:

① 設法取得系統輸入輸出的觀測數據:設計准則、持續激勵輸入信號的設計、采樣間隔的設計

② 應該有一個合適的模型集

③ 必須有一個對辨識所得到模型的驗證評價:利用先驗知識驗證、利用數據檢驗、利用實際響應檢驗、利用激勵信號的自相關函數檢驗

(2)最小二乘法LSM(Least Squares Method)簡單原理及應用

最小二乘法原理:未知量的最可能值是使各項實際觀測值和計算值之間差的平方乘以其精確度的數值以后的和最小。

也就是說:

下面舉一個例子說明算法原理:

通過試驗確定熱敏電阻阻值和溫度之間的關系:

其中R = a + bt

對於上面的例子,在matlab中實現並進行計算:

clear;
t = [20.5 26 32.7 40 51 61 73 80 88 95.7];
R = [765 790 826 850 873 910 942 980 1010 1022];
figure;
plot(t,R,"*");
hold on;
N = numel(t);

%最小二乘法擬合線性模型參數
den = N*sum(t.^2) - sum(t)^2;
a = (sum(R)*sum(t.^2) - sum(R.*t)*sum(t))/den
b = (N*sum(R.*t) - sum(R)*sum(t))/den

%繪制擬合直線
t1 = 1:100;
R1 = a + b*t1;
plot(t1, R1);

%計算溫度t2 = 70對應的組織
t2 = 70;
R2 = a + b*t2

補充:如果希望將數據點連接起來,可以將plot語句改成:plot(t,R,"*-");

輸出結果如下:

(3)LSM在控制系統建模中的應用

算法原理:

注意事項:

偽隨機序列(M序列)的產生:

matlab代碼:

clear;

n = 4; %四個移位寄存器
L = 2^n-1; %M序列的周期
mag = 5; %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) = -mag;
	else
        u(i) = mag;
	end
	y1 = x1;
	y2 = x2;
	y3 = x3;
	y4 = x4;
end

figure(1); stem(u); grid on;
title('輸入如信號M序列')

生成的信號如下:

應用實例:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM