我正在嘗試在 Matlab 中實作一個名為 Gamma 的矩陣。它將包括稱為 H 的較小矩陣,如下圖所示

我在 Matlab 中實作它時遇到了麻煩。
我所做的如下:
我創建了一個名為
function [Gamma] = get_Gamma(N,A,B,Cz)
然后我創建 H 矩陣
for i=1:N
H(:,:,i) = Cz*Ad^(i-1)*Bd;
end
Hn = size(H,1);
Hm = size(H,2);
我的問題是如何進行迭代:
Gamma = [H(:,:,1) zeros(2,2) zeros(2,2)]
Gamma = [Gamma ; H(:,:,2) H(:,:,1) zeros(2,2)]
Gamma = [Gamma ; H(:,:,3) H(:,:,2) H(:,:,1)]
我一直在嘗試做這樣的事情
Gamma = [];
counter = 1;
for i=1:N
for j=1:N
if i <= counter
Gamma_update = H(:,:,j);
Gamma = [Gamma Gamma_update];
else
Gamma_update = zeros(Hn,Hm);
Gamma = [Gamma Gamma_update];
end
Gamma = [Gamma ; H(:,:,2) H(:,:,1) zeros(2,2)]
end
end
但我知道這行不通。我希望你能幫我解決這個問題!
uj5u.com熱心網友回復:
我剛剛設法找到了解決我的問題的方法,如下所示:
function [Gamma] = get_Gamma(N,Ad,Bd,Czd)
% N: number of impulse response matrices to find Markov Parameters
for i=1:N
H(:,:,i) = Czd*Ad^(i-1)*Bd;
end
Hn = size(H,1);
Hm = size(H,2);
Gamma = [];
counter = 1;
for i=1:N
Gamma_update = [];
for k=N:-1:counter 1
Gamma_update = [zeros(Hn,Hm) Gamma_update];
end
for j=1:counter
Gamma_update = [H(:,:,j) Gamma_update];
end
Gamma = [Gamma ; Gamma_update];
counter = counter 1;
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/345204.html
