MATLAB 帮助中心
将状态空间表示形式转换为传递函数
[b,a] = ss2tf(A,B,C,D)
[b,a] = ss2tf(A,B,C,D,ni)
[b,a] = ss2tf(A,B,C,D) 将方程组的状态空间表示形式转换为等同的传递函数。ss2tf 返回连续时间方程组的拉普拉斯变换传递函数和离散时间方程组的 Z 变换传递函数。
b
a
A
B
C
D
ss2tf
示例
[b,a] = ss2tf(A,B,C,D,ni) 返回当具有多个输入的方程组的第 ni 个输入受单位冲激影响时所生成的传递函数。
ni
全部折叠
一维离散时间震荡系统由单位质点 m 通过一根单位弹性常量弹簧连接到墙壁构成。传感器以 Fs=5 Hz 对质量的加速度 a 取样。
生成 50 个时间采样。定义采样间隔 Δt=1/Fs。
Fs = 5; dt = 1/Fs; N = 50; t = dt*(0:N-1);
振荡器可以通过状态空间方程描述。
x(k+1)=Ax(k)+Bu(k),y(k)=Cx(k)+Du(k),
其中 x=(rv)T 是状态向量,r 和 v 分别是质点的位置和速度,而矩阵
A=(cosΔtsinΔt-sinΔtcosΔt),B=(1-cosΔtsinΔt),C=(-10),D=(1).
A = [cos(dt) sin(dt);-sin(dt) cos(dt)]; B = [1-cos(dt);sin(dt)]; C = [-1 0]; D = 1;
系统使用正方向的单位冲激进行刺激。使用该状态空间模型计算系统从全零的初始状态开始的时间演进。
u = [1 zeros(1,N-1)]; x = [0;0]; for k = 1:N y(k) = C*x + D*u(k); x = A*x + B*u(k); end
以时间函数形式绘制质量的加速度。
stem(t,y,'filled') xlabel('t')
使用传递函数 H(z) 过滤输入以计算时间相关加速度。绘制结果。
[b,a] = ss2tf(A,B,C,D); yt = filter(b,a,u); stem(t,yt,'filled') xlabel('t')
系统的传递函数包含一个解析式:
H(z)=1-z-1(1+cosΔt)+z-2cosΔt1-2z-1cosΔt+z-2.
使用表达式过滤输入。绘制响应。
bf = [1 -(1+cos(dt)) cos(dt)]; af = [1 -2*cos(dt) 1]; yf = filter(bf,af,u); stem(t,yf,'filled') xlabel('t')
所有这三种情况下的结果都相同。
理想的一维振荡系统由位于两面墙壁间的两个单位质点 m1 和 m2 组成。每个质点通过一根单位弹性常量弹簧连接到最近的墙壁。另外一根弹簧连接这两个质点。传感器以 Fs=16 Hz 的频率对 a1 和 a2(质点的加速度)采样。
将总测量时间指定为 16 秒。定义采样间隔 Δt=1/Fs。
Fs = 16; dt = 1/Fs; N = 257; t = dt*(0:N-1);
系统可以由状态空间模型描述
x(n+1)=Ax(n)+Bu(n),y(n)=Cx(n)+Du(n),
其中 x=(r1v1r2v2)T 是状态向量,ri 和 vi 分别是第 i 个质点的位置和速度。输入向量 u=(u1u2)T,输出向量 y=(a1a2)T。状态空间矩阵为
A=exp(AcΔt),B=Ac-1(A-I)Bc,C=(-201010-20),D=I,
连续时间状态空间矩阵为
Ac=(0100-2010000110-20),Bc=(00100001),
I 表示合适大小的单位矩阵。
Ac = [0 1 0 0; -2 0 1 0; 0 0 0 1; 1 0 -2 0]; A = expm(Ac*dt); Bc = [0 0; 1 0; 0 0; 0 1]; B = Ac\(A-eye(4))*Bc; C = [-2 0 1 0; 1 0 -2 0]; D = eye(2);
第一个质点 m1 接收正向的单位冲激。
ux = [1 zeros(1,N-1)]; u0 = zeros(1,N); u = [ux;u0];
使用该模型计算系统从全零的初始状态开始的时间演进。
x = [0 0 0 0]'; y = zeros(2,N); for k = 1:N y(:,k) = C*x + D*u(:,k); x = A*x + B*u(:,k); end
以时间函数形式绘制两个质点的加速度。
stem(t,y','.') xlabel('t') legend('a_1','a_2') title('Mass 1 Excited') grid
将系统转换为其传递函数表示形式。求得对第一个质点的正单位冲激刺激的系统响应。
[b1,a1] = ss2tf(A,B,C,D,1); y1u1 = filter(b1(1,:),a1,ux); y1u2 = filter(b1(2,:),a1,ux);
绘制结果。传递函数提供与状态空间模型相同的响应。
stem(t,[y1u1;y1u2]','.') xlabel('t') legend('a_1','a_2') title('Mass 1 Excited') grid
系统将重置为其初始配置。现在,其他质点 m2 接收正向单位冲激。计算该系统的时间演进。
u = [u0;ux]; x = [0;0;0;0]; for k = 1:N y(:,k) = C*x + D*u(:,k); x = A*x + B*u(:,k); end
绘制加速度。将交换各个质点的响应。
stem(t,y','.') xlabel('t') legend('a_1','a_2') title('Mass 2 Excited') grid
求得对第二个质点的正单位冲激刺激的系统响应。
[b2,a2] = ss2tf(A,B,C,D,2); y2u1 = filter(b2(1,:),a2,ux); y2u2 = filter(b2(2,:),a2,ux);
stem(t,[y2u1;y2u2]','.') xlabel('t') legend('a_1','a_2') title('Mass 2 Excited') grid
状态矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则 A 为 n×n。
数据类型: single | double
single
double
输入-状态矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则 B 为 n×p。
状态-输出矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则 C 为 q×n。
馈通矩阵,指定为矩阵。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则 D 为 q×p。
输入索引,指定为一个整数标量。如果方程组具有 p 个输入,请使用带尾部参量 ni = 1, …, p 的 ss2tf 计算对应用于第 ni 个输入的单位冲激的响应。
传递函数分子系数,以向量或矩阵的形式返回。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则对于每个输入,b 为 q×(n + 1)。系数按 s 或 z 的幂的降序返回。
传递函数分母系数,以向量的形式返回。如果方程组具有 p 个输入和 q 个输出并且由 n 个状态变量描述,则对于每个输入,a 为 1×(n + 1)。系数按 s 或 z 的幂的降序返回。
对于离散时间系统,状态空间矩阵通过
x(k+1)=A x(k)+B u(k)y(k)= C x(k)+D u(k).
与状态向量 x、输入 u 和输出 y 相关。
传递函数是方程组的冲激响应的 Z 变换。可以按状态空间矩阵表示形式将其表示为
H(z)=C(zI−A)−1B+D.
对于连续时间方程组,状态空间矩阵通过
x˙=A x+B uy=C x+D u.
传递函数是方程组的冲激响应的拉普拉斯变换。可以按状态空间矩阵表示形式将其表示为
H(s)=C(sI−A)−1B+D.
在 R2006a 之前推出
latc2tf (Signal Processing Toolbox) | sos2tf (Signal Processing Toolbox) | ss2sos (Signal Processing Toolbox) | ss2zp (Signal Processing Toolbox) | tf2ss (Signal Processing Toolbox) | zp2tf (Signal Processing Toolbox)
latc2tf
sos2tf
ss2sos
ss2zp
tf2ss
zp2tf
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处