我尝试使用命令ss2tf
进行转换,但此命令的sintax显示了输入系统输入数量的位置,而不是输出数量。不过我试着用
[num,den]=ss2tf(Ac,Bc,Cc,Dc,4)
其中'4'是输入数量。
因此,向量“num”具有4x9维度,而我的向量“den”具有1x9维度,因此使用
时出现错误 F=tf(num,den)
因为“den”应该有4x9维度。
那么,是否有另一种从状态空间获取传递函数的方法(可选择包括输入和输出的数量)??
obs:Ac,Bc,Cc和Dc的dimmension分别为8x8; 8x4,4x8和4x4。
编辑:弄清楚如何解决它。下面有一个答案。
答案 0 :(得分:3)
这是我应该怎么做的。代码是自我解释。
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
本身。
答案 1 :(得分:1)
如果您的系统有search.addWidget(
instantsearch.widgets.hits({
container: '#hits-container',
templates: {
empty: 'No results',
item: '<strong><a href="{{url}}" target="_blank">{{title}}</a></strong><br>{{type}}<br><i><span style="font-size: smaller !important;"{{_highlightResult.summary.value}}</span></i><br>'
},
hitsPerPage: 25
})
);
输入和p
输出,则转移函数矩阵q
包含G(s)
行和p
列。 q
的每个元素pq是关于entrie G(s)
和输出p
的SISO传递函数。
让q
成为系统订单。因此,如果您使用n
输入,则会获得尺寸为[b,a] = ss2tf(A,B,C,D,1)
的{{1}}和尺寸为b
的{{1}}。要获得qx(n+1)
的元素1x1,您必须从a
的第一行和向量1x(n+1)
获取SISO传递函数。类似地,对于元素1x2,您必须从G(s)
的第二行和向量b
获取传递函数。使用a
的所有行获得传递函数后,您将获得b
的第一行。
对于其他行,您必须输入a
(并再次获取所有SISO传输函数),然后执行b
,依此类推。
最后,使用矩阵连接来获得G(s)
的紧凑形式,如:
[b,a] = ss2tf(A,B,C,D,2)
答案 2 :(得分:0)
我认为你误解了函数的语法。这是documentation所说的内容:
[b,a] = ss2tf(A,B,C,D)
转换a的状态空间表示 系统转换为等效传递函数。ss2tf
返回 拉普拉斯变换传递函数用于连续时间系统和 离散时间系统的Z变换传递函数。[b,a] = ss2tf(A,B,C,D,ni)
返回当结果时产生的传递函数n
具有多个输入的系统的输入由一个单元激发 冲动。
因此,您不需要指定输入/输出的数量,它们由您的状态空间矩阵的相应大小暗示。使用第一种语法,你应该没问题。
答案 3 :(得分:0)
您不需要使用tf2ss
或ss2tf
。你可以使用
G_s = tf(G);
直接从一个系统表示转换为另一个系统表示。