ここでは、私はそれを行う必要がある方法です。コードは自己説明的です。
clear all;
close all;
clc;
% Generate random state-space system
sys = rss(2,2,2);
%% Generate transfer function matrix with Matlab tf
% For each output
for i = 1:size(sys,1)
% For each input
for j = 1:size(sys,2)
% Get SISO transfer function
[num,den] = ss2tf(sys(i,j).A,sys(i,j).B,sys(i,j).C,sys(i,j).D);
% Compute tf
Gtf(i,j) = tf(num,den);
end
end
%% Generate transfer function matrix symbolic
% Laplace variable
s = sym('s');
% For each output
for i = 1:size(sys,1)
% For each input
for j = 1:size(sys,2)
% Get SISO transfer function
[num,den] = ss2tf(sys(i,j).A,sys(i,j).B,sys(i,j).C,sys(i,j).D);
% Compute tf
Gsym(i,j) = poly2sym(num,s);
end
end
% Den is the same for all elements
Gsym = Gsym/poly2sym(den,s);
% Numeric vectors is transformed to symbolic vector, to make everything
% readable change the variable precision arithmetic to 4 digits for output
pretty(vpa(Gsym,4))
-Edit-私は私が実際にMATLABは、この機能は、機能ss2tf
自体に組み込まれていないことを少し驚いていることを言わなければなりません。
それはエラーにつながるので、実際に、私は、この場合は最初の構文を使用することはできません。 「」エラーをIUが** **複数の入力を持つシステムを指定する必要がありss2tf(ライン26) を使用。 bode(行5)のエラー [num、den] = ss2tf(Ac、Bc、Cc、Dc); '' – gustavoreche
これで、入力を 'for'ループでループして、 2番目の構文を使用して一度に入力します。次に、 'n'が入力の数である' n'転送関数で終わるでしょう。 – am304