2026a
M 语言

# freqresp


网格频率响应

# 语法

[H,wout] = freqresp(sys)
H = freqresp(sys,w)
H = freqresp(sys,w,units)
[H,wout,covH] = freqresp(idsys,...)

# 说明

[H,wout] = freqresp(sys) 返回动态系统模型在 frequencies 处的频率响应。该命令根据 syswoutfreqrespsys 的动态自动确定频率。


H = freqresp(sys,w) 返回由向量 w 指定的实数频率网格上的频率响应 。


H = freqresp(sys,w,units) 显式指定 w 的频率单位。


[H,wout,covH] = freqresp(idsys, ...) 还返回已识别模型的频率响应的协方差 covH

# 输入参数

sys
任何动态系统模型或模型数组。
w
用于评估频率响应的实际频率向量。以 为单位指定频率,其中 是在 sys 的属性中指定的时间单位。rad/时间单位时间单位时间单位。
units

输入频率向量 w 中的频率单位,指定为以下值之一:

  • 'rad/TimeUnit' - sys TimeUnit 属性中指定的每个时间单位的弧度
  • 'cycles/TimeUnit' - 在 TimeUnitsys 的属性中指定的每个时间单位的周期数
  • 'rad/s'
  • 'Hz'
  • 'kHz'
  • 'MHz'
  • 'GHz'
  • 'rpm'

默认值: 'rad/TimeUnit'

idsys

任何已识别的模型

# 输出参数

H - 包含频率响应值的数组

如果 sys 是一个具有 Ny 个输出、Nu 个输入的单个动态系统模型,则 H 是一个 Ny * Nu * Nw的三维数组,其中 Nw 是频率点的数量,因此 H(:, :, k) 是 w(k) 或 wout(k) 的响应。

如果 sys 是一个大小为 [Ny Nu S1 ... Sn] 的模型数组,则 H 是 Ny * Nu * Nw * S1 * ... * Sn 的数组

如果 sys 是一个频率响应数据模型(如frd、genfrd或idfrd),对于落在 sys.frequency 定义的频率区间之外的 w 值,freqresp(sys, w) 将计算为 NaN 。freqresp 命令可以在 sys.frequency 中的频率之间进行插值。然而,freqresp无法在 sys.frequency 定义的频率区间之外进行外推。

wout - 对应于 H 中频率响应值的频率向量

对应于 H 中频率响应值的频率向量。如果你在 freqresp 的输入中省略 w ,命令会根据系统动态自动确定 wout 的频率。如果你指定 w,则 wout=w。

covH - 响应 H 的协方差

响应 H 的协方差。协方差是一个5维数组,其中 covH(i, j, k, :, :)包含从第 i 个输入到第 j 个输出在频率 w(k) 处的 2x2 响应协方差矩阵。这个 2x2 矩阵的 (1,1) 元素是响应实部的方差。(2,2) 元素是响应虚部的方差。(1,2) 和 (2,1) 元素是响应实部和虚部之间的协方差。

# 示例

计算系统频率响应

创建以下 2 输入 2 输出系统:

sys11 = 0; 
sys22 = 1; 
sys12 = tf(1, [1 1]); 
sys21 = tf([1 -1], [1 2]);
sys = [sys11, sys12; sys21, sys22];

计算系统的频率响应。

[H, wout] = freqresp(sys);

H 是一个 2×2×109 的数组。每个条目是一个 2×2 的矩阵,表示在相应频率下的所有输入输出对的复频率响应。109 个频率是根据 H 的动态特性自动选择的。H(:, :, k) 表示在频率 wout(k) 下的 sys 的复频率响应。

在指定的频率网格上计算频率响应

创建以下 2 输入 2 输出系统:

sys11 = 0; 
sys22 = 1; 
sys12 = tf(1, [1 1]); 
sys21 = tf([1 -1], [1 2]);
sys = [sys11, sys12; sys21, sys22];

在 10 到 100 弧度/秒之间创建 200 个对数等间距的频率点网格。

w = logspace(1, 2, 200);

在指定的频率网格上计算系统的频率响应。

H = freqresp(sys, w);

H 是一个 2×2×200 的数组。其中的每个元素是一个 2×2 的复数频率响应矩阵,H(:, :, k) 表示sys在相应频率 w(k) 下所有输入-输出对的频率响应。

# 更多内容

频率响应

在连续时间中,频率响应在频率 ω 处是传递函数在 s = jω 处的值。对于状态空间模型,该值由下式给出

在离散时间中,频率响应是评估在与实频率对应的单位圆上的点的传递函数。使用变换 freqrespw(1)w(N) 将实际频率映射到单位圆上的点。 是采样时间。该函数返回在结果 值处的传递函数值。对于采样时间未指定的模型,使用 freqresp = 1。

# 算法

对于传递函数或零极点增益模型,在指定的频率点上评估分子和分母。对于连续时间状态空间模型(A, B, C, D),频率响应为 freqresp

为了提高效率,A 矩阵被转换为上哈斯 enberg 形式,并在每个频率点上通过利用哈斯 enberg 结构来求解线性方程 。将矩阵转换为哈斯 enberg 形式在效率和可靠性之间提供了一个良好的权衡。

# 替代方案

使用 evalfr 可以在个别频率或少量频率上评估频率响应。 freqresp 适用于中等到大量频率的向量。

# 参考文献

[1] Laub, A.J., "Efficient Multivariable Frequency Response Computations," IEEE® Transactions on Automatic Control, AC-26 (1981), pp. 407-408.