AnyMath 文档

ss2tf

将状态空间中的表示转换为传递函数。

库::`工程师`

语法

函数调用

  • [参数:b],[参数:a]=ss2tf(<参数:A>>,<参数:B>>,<参数:C>>,<参数:D>>) -将系统在状态空间中的表示转换为等效传递函数。 功能 ss2tf 返回连续时间系统的拉普拉斯变换的传递函数和离散时间系统的Z变换的传递函数。

  • [参数:b],[参数:a]=ss2tf(<参数:A>>,<参数:B>>,<参数:C>>,<参数:D>>,<参数:ni>>) -返回由单个脉冲激发时获得的传递函数 [参数:ni]-具有多个输入的系统的第1输入。

争论

输入参数

# *A*是 国家矩阵

+ 矩阵

Details

定义为矩阵的状态矩阵。 如果系统有 入口及 输出和描述 态变量,则 A 尺寸为 .

数据类型

漂浮物32, 漂浮64</无翻译>

# B 是输入状态矩阵

+ 矩阵

Details

输入状态矩阵,定义为矩阵。 如果系统有 入口及 输出和描述 态变量,则 B 尺寸为 .

数据类型

漂浮物32, 漂浮64</无翻译>

# C 是输出状态矩阵

+ 矩阵

Details

输出状态矩阵,定义为矩阵。 如果系统有 入口及 输出和描述 态变量,则 C 尺寸为 .

数据类型

漂浮物32, 漂浮64</无翻译>

# *D*是终点- 端传输矩阵

+ 矩阵

Details

的端到端传输矩阵,定义为矩阵。 如果系统有 入口及 输出和描述 态变量,则 D 尺寸为 .

数据类型

漂浮物32, 漂浮64</无翻译>

# — 条目索引

+ 1 (默认情况下)| 标量,标量

Details

输入的索引,设置为整数标量。 如果系统有 输入,使用功能 ss2tf 有争论 来计算对施加到的单个脉冲的响应 -我进来了

数据类型

Int32, Int64</无翻译>

输出参数

# b — 传递函数分子的系数

+ 向量资料 | 矩阵

Details

传递函数分子的系数,作为向量或矩阵返回。 如果系统有 入口及 输出和描述 态变量,则 b 尺寸为 每个入口。 系数按度降序返回 .

# 一个 — 传递函数分母的系数

+ 向量资料

Details

传递函数的分母的系数,作为向量返回。 如果系统有 入口及 输出和描述 态变量,则 a 尺寸为 每个入口。 系数按度降序返回 .

例子:

质量弹簧系统

Details

具有离散时间的一维振荡系统由单个质量块组成 ,通过具有单位弹性常数的弹簧附着在壁上 . 传感器记录加速度 频率质量 赫兹。

tf2sos

生成 50 时间很重要。 让我们定义采样间隔 .

Fs = 5
dt = 1 / Fs
N = 50
t = dt * (0:N-1)

振荡器可以用状态空间的方程来描述:



哪里 为状态向量, -质量的位置和速度,分别与矩阵

A = [cos(dt) sin(dt); -sin(dt) cos(dt)]
B = [1-cos(dt); sin(dt)]
C = [-1 0]
D = 1

系统由正方向的单个脉冲激励。 我们使用状态空间模型来计算系统的时间演变,从零初始状态开始。

u = [1.0; zeros(N-1)]

x = [0; 0]
y = zeros(N)

for k = 1:N
    y[k] = (C * x)[1] + D * u[k]
    global x = A * x + B * u[k]
end

让我们绘制质量加速度对时间的依赖性。

plot(t, y,
     seriestype = :stem,
     marker = :circle,
     legend = false)

ss2tf 1

让我们使用传递函数计算加速度对时间的依赖性 来对输入信号进行滤波。 让我们绘制结果图。

import EngeeDSP.Functions: ss2tf, filter

b, a = ss2tf(A, B, C, D)
yt = filter(b, a, u)
plot(t, yt,
     seriestype = :stem,
     marker = :circle,
     legend = false)

ss2tf 2

系统的传递函数具有解析表达式:

我们使用这个表达式来过滤输入信号。 让我们建立一个响应图。

bf = [1 -(1 + cos(dt)) cos(dt)]
af = [1 -2*cos(dt) 1]
yf = filter(bf, af, u)

plot(t, yf,
     seriestype = :stem,
     marker = :circle,
     legend = false)

ss2tf 3

结果在所有三种情况下都是相同的。

两个机构的振荡器

Details

理想的一维振荡系统由两个单位质量组成 封闭在两个壁之间。 每个质量通过具有单位弹性常数的弹簧附着在最近的壁上 . 另一个相同类型的弹簧连接两个质量块。 传感器记录质量加速度 ,与频率 赫兹。

ss2tf

设置总测量时间 16 C.定义采样间隔 .

Fs = 16
dt = 1 / Fs
N = 257
t = dt * (0:N-1)

该系统可以使用状态空间模型来描述。:



哪里 -状态的向量,以及 -位置和速度 -th质量,分别。 输入向量 和输出向量 . 状态空间矩阵:

哪里 , -连续时间状态空间矩阵:

但是 表示适当大小的单位矩阵。

using LinearAlgebra

Ac = [0 1 0 0; -2 0 1 0; 0 0 0 1; 1 0 -2 0]
A = exp(Ac * dt)

Bc = [0 0; 1 0; 0 0; 0 1]
B = Ac \ (A - I(4)) * Bc

C = [-2 0 1 0; 1 0 -2 0]
D = I(2)

第一次弥撒 正方向接收单个脉冲。

ux = [1; zeros(N-1)]'
u0 = zeros(1, N)
u = [ux; u0]

我们使用状态空间模型来计算系统的时间演变,从零初始状态开始。

x = zeros(4)
y = zeros(2, N)

对于k=1:N
    y[:,k]=C*x+D*u[:,k]
    全局x=A*x+B*u[:,k]
结束

让我们绘制两个质量块的加速度对时间的依赖性。

plot(t, y',
     seriestype = :stem,
     marker = :circle,
     markersize = 1.5,
     xlabel = "t",
     label = ["a₁" "a₂"],
     title = "Mass 1 Excited",
     grid = true)

ss2tf 4

我们将系统转换为传递函数形式的表示。 让我们找到系统对第一质量上的正单脉冲作用的响应。

import EngeeDSP.Functions: ss2tf, filter

b1, a1 = ss2tf(A, B, C, D, 1)
y1u1 = filter(b1[1, :], a1, ux)
y1u2 = filter(b1[2, :], a1, ux)

让我们绘制结果图。 传递函数给出与状态空间模型相同的响应。

plot(t, [y1u1; y1u2]',
     seriestype = :stem,
     marker = :circle,
     markersize = 1.5,
     xlabel = "t",
     label = ["a₁" "a₂"],
     title = "Mass 1 Excited",
     grid = true)

ss2tf 5

系统返回到其原始状态。 现在又是一个弥撒, ,接收正方向的单个脉冲。 让我们计算系统的时间演变。

u = [u0; ux]
x = zeros(4)

for k = 1:N
    y[:, k] = C * x + D * u[:, k]
    global x = A * x + B * u[:, k]
end

让我们绘制加速度图。 个别群众的反应发生了变化。

plot(t, y',
     seriestype = :stem,
     marker = :circle,
     markersize = 1.5,
     xlabel = "t",
     label = ["a₁" "a₂"],
     title = "Mass 2 Excited",
     grid = true)

ss2tf 6

让我们找到系统对第二质量上的正单脉冲作用的响应。

b2, a2 = ss2tf(A, B, C, D, 2)
y2u1 = filter(b2[1, :], a2, ux)
y2u2 = filter(b2[2, :], a2, ux)

让我们绘制结果图。 传递函数给出与状态空间模型相同的响应。

plot(t, [y2u1; y2u2]',
     seriestype = :stem,
     marker = :circle,
     markersize = 1.5,
     xlabel = "t",
     label = ["a₁" "a₂"],
     title = "Mass 2 Excited",
     grid = true)

ss2tf 7

此外

传递函数

Details

功能 ss2tf 将状态空间中给定系统表示的参数转换为传递函数的等效形式。

*对于离散系统,状态空间矩阵与状态向量相关 、入口 和出口 :

+



+ 传递函数是系统脉冲响应的Z变换。 它可以用状态空间矩阵表示如下:

+

*对于连续系统,状态空间矩阵与状态向量相关 、入口 和出口 :

+



+ 传递函数是系统脉冲响应的拉普拉斯变换。 它可以用状态空间矩阵表示如下:

+