行列 A、B、C、D を持つ状態空間システムがあります。
状態空間システムを作成するか、伝達関数行列をsys1 = ss(A,B,C,D)
計算できます。sys2 = C*inv(z*I - A)*B + D
ただし、両方のシステムのボード線図を描くと、同じはずなのに異なっています。
ここで何がうまくいかないのですか?誰も手がかりを持っていますか?によって生成されたボードプロットが正しいことは知っていsys1
ます。
システムはここからダウンロードできます: https://dl.dropboxusercontent.com/u/20782274/system.mat
clear all;
close all;
clc;
Ts = 0.01;
z = tf('z',Ts);
% Discrete system
A = [0 1 0; 0 0 1; 0.41 -1.21 1.8];
B = [0; 0; 0.01];
C = [7 -73 170];
D = 1;
% Set as state space
sys1 = ss(A,B,C,D,Ts);
% Compute transfer function
sys2 = C*inv(z*eye(3) - A)*B + D;
% Compute the actual transfer function
[num,den] = ss2tf(A,B,C,D);
sys3 = tf(num,den,Ts);
% Show bode
bode(sys1,'b',sys2,'r--',sys3,'g--');
編集:私は小さな間違いを犯しました.伝達関数行列は、以前に書いたsys2 = C*inv(z*I - A)*B + D
代わりにです。sys2 = C*inv(z*I - A)*B - D
問題はまだ残っています。
編集 2: 分母を計算すると、それが正しいことに気付きました。
syms z;
collect(det(z*eye(3) - A),z)