matlab中ss函数_[转载]matlab ss函数 tf函数ss
matlab定义函数表达式指定状态空间模型或者将线性时不变系统转成状态空间
语法
ss
sys = ss(a,b,c,d)
sys = ss(a,b,c,d,Ts)
sys = ss(d)
sys = ss(a,b,c,d,ltisys)
sys_ss = ss(sys)
说明
ss⽤来创建实数或复数的状态空间模型,或者将传递函数和零极点增益模型转为状态空间模型
创建状态空间模型
sys = ss(a,b,c,d) 创建连续的状态空间模型
x'=Ax+Bu
y=Cx+Du
这个模型具有Nx个状态,Ny个输出,Nu个输⼊
a是Nx*Nx的矩阵
b是Nx-by-Nu矩阵
c 是Ny-by-Nx矩阵
d 是 Ny-by-Nu 矩阵
将d设为标量0,来将矩阵D设置为0,更多信息见设置为状态空间模型matlab(state-space models),
sys = ss(a,b,c,d,Ts) 创建离散时间模型
x(n+1)=Ax(n)+Bu(n)
y(n)=Cx(n)+Du(n)
采样时间单位Ts为S,设置Ts = -1 or Ts = []将不指定采样时间
sys = ss(d) 指定⼀个静态增益矩阵D 等同于表达式
sys = ss([],[],[],d)
sys =
ss(a,b,c,d,ltisys)创建了拥有来源于线性时不变模型ltisys的⼀般线性时不变属性的状态空间模型(包括了采样时间).
所有上述语法后⾯都可以跟随其属性名称 属性值
所有的属性对指定了模型的特殊的LTI性质,例如在模型中输⼊的名称或者⼀些注释,更多细节见例1.表达式如下:
sys = ss(a,b,c,d,'Property1',Value1,...,'PropertyN',ValueN)
等同于sys = ss(a,b,c,d)
set(sys,'Property1',Value1,...,'PropertyN',ValueN)
转换为状态空间模型
sys_ss = ss(sys) 将任意的TF or ZPK 模型系统转换为状态空间模型,输出_ss is 等同于状态空间模型(SS
object).
sys_ss = ss(sys,'minimal')为状态空间的最⼩实现 等同于sys_ss
= minreal(ss(sys))
注意状态空间转换在单输⼊单输出(SIS0)的情况下并不唯⼀,在多输⼊输出(MIMO)中并不能保证状态空间的最⼩实现,更多信息,参照 Caution
About Model Conversions.
算法
对于 TF to SS 模型转换,
ss(sys_tf) 返回⼀个修改后的可控规范化的形式,此算法类似于
tf2ss,但是可以进⼀步重新调节状态向量以压缩矩阵A数值 ,并改进后来的数值计算。
对于 ZPK to SS 模型转换
ss(sys_zpk) uses direct form II structures, as
defined in signal processing texts. See Discrete-Time Signal
Processing by Oppenheim and Schafer for details.
For example, in the following code, A and sys.a differ by
对⾓线状态转换:
n=[1 1];
d=[1 1 10];
[A,B,C,D]=tf2ss(n,d);
sys=ss(tf(n,d));
A
A =
-1 -10
1 0
sys.a
ans =
-1 -5
2 0
例⼦
例⼀
命令sys = ss(A,B,C,D,0.05,'statename',{'position'
'velocity'},...
'inputname','force',...
'notes','Created 10/15/07')
⽤A,B,C,D 和采样时间0.05 s创建离散的时间模型,This
model has two states labeled position and velocity, and one input
labeled force ( A,B,C,D维数与⼀致数值的状态和输⼊⼀致). Finally, a note is
attached with the date of creation of the model.
Example 2
Compute a state-space realization of the transfer function
by typing
H = [tf([1 1],[1 3 3 2]) ; tf([1 0 3],[1 1 1])];
sys = ss(H);
size(sys)
State-space model with 2 outputs, 1 input, and 5 states.
The number of states is equal to the cumulative order of the
SISO entries of H(s).
To obtain a minimal realization of H(s), type
sys = ss(H,'min');
size(sys)
State-space model with 2 outputs, 1 input, and 3 states.
The resulting state-space model has order of three, which is the
minimum number of states needed to represent H(s). You can see this
number of states by factoring H(s) as the product of a first-order
system with a second-order system.
另Tf函数⽤来建⽴实部或复数传递函数模型或将状态⽅程、或零级增益模型转化成传递函数形式。
sys =
tf(num,den)命令可以建⽴⼀个传递函数,其中分⼦和分母分别为num和den。输出sys是储存传递函数数据的传递函数⽬标。
单输⼊单输出情况下,num和den是s的递减幂级数构成的实数或复数⾏向量。这两个向量并不要求维数相同。如h = tf([1
0],1)就明确定义了纯导数形式h(s)=s。
若要构建多输⼊多输出传递函数,要分别定义每⼀个单输⼊单输出系统的端⼝的分⼦与分母。这种情
况下:Num和den是单元数组,其中⾏数等于输出数,列数等于输⼊数; ⾏向量num{i,j}和den{i,j}定义了从输⼊j到输出i的传递函数的分⼦与分母。如果此多输⼊多输出系统的传递函数中所有的单输⼊单输出端⼝有相同的分母,可以设置den为代表这个通⽤分母的⾏向量。
sys = tf(num,den,Ts)可以创建⼀个采样时间为Ts的离散时间传递函数。设置Ts = -1 or Ts =
[]将不指定采样时间。有关num和den的设置与连续系统⼀样。
sys = tf(M)可以创建⼀个静态增益M(标量或矩阵形式)。
sys =
tf(num,den,ltisys)创建⼀个拥有来源于线性时不变模型ltisys的⼀般线性时不变属性的传递函数。有很多种⽅法可以创建线性时不变传递函数的数组。前⾯介绍的语法可以通过属性名,属性值来进⾏。
'Property',Value
每⼀对上述定义都明确指定模型的⼀个线性时不变属性,如输⼊名或传递函数变量。
sys =
tf(num,den,'Property1',Value1,...,'PropertyN',ValueN)是下述语句的简写形式
sys = tf(num,den)
set(sys,'Property1',Value1,...,'PropertyN',ValueN)
作为s或z的有理表达式的传递函数 可以应⽤实数或复数有理表达式来创建⼀个传递函数模型。
s = tf('s')⽤拉普拉斯算符s的有理表达式来创建传递函数;
z = tf('z',Ts)⽤离散时间变量z的有理表达式创建采样时间为Ts的传递函数模型。
⼀旦你定义了s或z变量,就可以直接将传递函数模型定义为上述变量的有理表达式。
如何转化为传递函数
tfsys =
tf(sys)可以将任意⼀个SS模型或ZPK线性时不变模型转化成传递函数的形式。输出tfsys便是sys的传递函数。缺省状态下tf⽤0作为分⼦来转化⼀个状态空间模型到⼀个传递函数形式。
tfsys =
tf(sys,'inv')⽤反演公式来得到分⼦。这种算法较快,但是在s=0的⾼阶模型中精度较差。
算例1 创建⼀两输出单输⼊传递函数
其中输⼊为电流,输出为扭矩和⾓速度。 num = {[1 1] ; 1}
den = {[1 2 2] ; [1 0]}
H = tf(num,den,'inputn','current','outputn',{'torque' 'ang.
velocity'},'variable','p')
从输⼊电流到输出扭矩的传递函数为(P+1)/(P^2+2P+2),到输出⾓速度的传递函数为1/P。在设置中设置'variable'属性为p会使得结果以p的表达式来显⽰。
算例2
⽤有理表达式来创建单输⼊单输出传递函数模型
s = tf('s'); H = s/(s^2 + 2*s +10); 这样会与h = tf([1 0],[1 2 10])得到相同的传递函数。
算例3 创建离散多输⼊多输出传递函数模型
分母相同d(z)=z+0.3,采样时间0.2s。
nums = {1 [1 0];[-1 2] 3}
Ts = 0.2
H = tf(nums,[1
0.3],Ts) % 注意此处⾏向量代表分母d(z)
算例4
计算下列状态空间模型的传递函数
sys = ss([-2 -1;1 -2],[1 1;2 -1],[1 0],[0
1]) tf(sys) 从输⼊1到输出的传递函数为 s s^2 + 4 s + 5
从输⼊2到输出的传递函数为 s^2 + 5 s + 8 s^2 + 4 s + 5
算例5
可以应⽤for循环来定义⼀个10*1的单输⼊单输出传递函数模型s = tf('s')
H =
tf(zeros(1,1,10));
for
k=1:10,
H(:,:,k) =
k/(s^2+s+k);
end
此处率先为传递函数矩阵分配了⼀个空间。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。