主要内容

freqresp

在频率网格上评估系统响应

说明

使用 freqresp 在频率网格上评估系统响应。要获取幅值和相位数据以及频率响应图,请使用 bode

[H,wout] = freqresp(sys) 返回动态系统模型 sys 在频率 wout 下的频率响应。freqresp 会根据 sys 的动态特性自动确定频率。有关频率响应的详细信息,请参阅频率响应

示例

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

示例

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

[H,wout,covH] = freqresp(sys,___) 还返回频率响应的协方差 covH。仅当 sysIdentified LTI Models中列出的某一类型的辨识模型时,才使用此语法。

示例

示例

全部折叠

对于此示例,假设有以下 SISO 状态空间模型:

A=[-1.5-210]B=[0.50]C=[01]D=0SISO State-Space Model

创建由以下状态空间矩阵定义的 SISO 状态空间模型:

A = [-1.5,-2;1,0];
B = [0.5;0];
C = [0,1];
D = 0;
sys = ss(A,B,C,D);

计算该系统的频率响应。

[H,wout] = freqresp(sys);
size(H)
ans = 1×3

     1     1    56

H 包含 sys 在 56 个基于其动态特性自动选择的频率下的响应。

size(wout)
ans = 1×2

    56     1

wout 包含对应的 56 个频率。

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

sys=[01s+1s-1s+21]

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×45 数组。H 中每个条目 H(:,:,k) 都是一个 2×2 矩阵,代表 sys 在对应频率 wout(k) 下所有 I/O 对组的复频率响应。wout 中的 45 个频率是基于 sys 的动态特性自动选择的。

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

sys=[01s+1s-1s+21]

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 数组。H 中每个条目 H(:,:,k) 都是一个 2×2 矩阵,代表 sys 在对应频率 w(k) 下所有 I/O 对组的复频率响应。

计算辨识过程模型在其峰值响应频率处的频率响应和相关协方差。

加载估计数据 z1

load iddata1 z1

使用该数据估计 SISO 过程模型。

model = procest(z1,'P2UZ');

计算模型达到峰值频率响应增益时的频率。为获得更准确的结果,请指定容差值为 1e-6

[gpeak,fpeak] = getPeakGain(model,1e-6);

计算 model 在其峰值响应频率处的频率响应和相关协方差。

[H,wout,covH] = freqresp(model,fpeak);

Hfpeak 频率处的响应值,并且 woutfpeak 相同。

covH 是一个 5 维数组,包含在 fpeak 频率处从输入到输出的响应协方差矩阵。其中,covH(1,1,1,1,1) 是响应实部的方差,covH(1,1,1,2,2) 是响应虚部的方差。covH(1,1,1,1,2)covH(1,1,1,2,1) 元素是响应实部与虚部之间的协方差。

输入参数

全部折叠

动态系统,指定为 SISO 或 MIMO 动态系统模型或动态系统模型数组。您可以使用的动态系统包括:

  • LTI 模型,如 sstfzpk 模型。

  • 稀疏状态空间模型,如 sparssmechss 模型。

  • 广义或不确定状态空间模型,如 genssuss (Robust Control Toolbox) 模型。(使用不确定模型需要 Robust Control Toolbox™ 软件。)

    • 对于可调控制设计模块,该函数根据模型的当前值计算频率响应。

    • 对于不确定的控制设计模块,该函数根据模型的标称值和随机样本计算频率响应。

  • 辨识的状态空间模型,如 idss (System Identification Toolbox) 模型。(使用辨识模型需要 System Identification Toolbox™ 软件。)

有关模型的完整列表,请参阅动态系统模型

用于评估系统响应的频率,指定为向量。以 rad/TimeUnit 为单位指定频率,其中 TimeUnitsysTimeUnit 属性中指定的时间单位。您可以直接将频率指定为实数值,也可以用拉普拉斯变量 sz 表示频率。

  • 要获取指定频率下的系统响应,请在 w 中使用实数值。

  • 要获取 sz 平面中指定点处的系统响应,请使用复数值。freqresp 对复数值的解释如下:

    • 对于连续时间 sys,函数将 w 解释为 w(k) = s(k) = j*freq(k),其中 freq(k) 是与每个 s 值对应的频率。

    • 对于离散时间 sys,函数将 w 解释为 w(k) = z(k) = exp(j*freq(k)*Ts),其中 freq(k) 是频率,Tssys 的采样时间。

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

  • 'rad/TimeUnit' - 弧度/sysTimeUnit 属性指定的时间单位

  • 'cycles/TimeUnit' - 周期/sysTimeUnit 属性指定的时间单位

  • 'rad/s'

  • 'Hz'

  • 'kHz'

  • 'MHz'

  • 'GHz'

  • 'rpm'

输出参量

全部折叠

频率响应值,以数组形式返回。H 的维度取决于 sys 的维度。

  • 如果 sys 是 SISO 模型,则 H 是一个维度为 1×1×Nw 的数组,其中 Nw 是频率点数量(即 length(w)length(wout))。

  • 如果 sys 是具有 Ny 个输出和 Nu 个输入的 MIMO 模型,则 H 是一个 Ny×Nu×Nw 的数组。因此,H(:,:,k) 是所有 I/O 通道在第 k 个频率处的响应,H(a,b,:) 是从输入 b 到输出 a 的响应。

  • 如果 sys 是数组维度为 [S1 ... Sn 的模型数组,包含 I/O 维度为 [Ny Nu] 的模型,则 H 是一个维度为 Ny×Nu×Nw×S1×…×Sn 的数组。例如,数组中第三个系统的第一个输出对第二个输入在所有计算频率处的响应为 H(1,2,:,3)

对于频率响应数据模型(例如 frdgenfrdidfrd),当 w 的值超出 sys.frequency 所定义的频率区间时,freqresp(sys,w) 的计算结果为 NaNfreqresp 命令可以在 sys.frequency 中的频率之间进行插值。但是,freqresp 无法超出 sys.frequency 所定义的频率区间进行外插。

与频率响应 H 对应的输出频率,以向量形式返回。当您在 freqresp 的输入中省略 w 时,命令会基于系统动态特性自动确定 wout 的频率。如果您指定 w,则 wout = w

频率响应的协方差,以 5 维数组形式返回。例如,covH(i,j,k,:,:) 包含在频率 w(k) 处从第 i 个输入到第 j 个输出的响应的 2×2 协方差矩阵。此 2×2 矩阵的 (1,1) 元素是响应实部的方差。(2,2) 元素是响应虚部的方差。(1,2) 和 (2,1) 元素是响应实部与虚部之间的协方差。

详细信息

全部折叠

算法

对于传递函数或零极点增益模型,freqresp 在指定频率点处计算分子和分母。对于连续时间状态空间模型(ABCD),频率响应为

D+C(jωA)1B,ω=ω1,,ωN

为提高效率,A 会被约简为上黑森贝格形式,并在每个频率点处求解线性方程 (jω − A)X = B,以利用黑森贝格结构体的优势。将矩阵约简为黑森贝格形式可在效率与可靠性之间取得良好平衡。有关该技术的更多详细信息,请参阅 [1]

参考

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

版本历史记录

在 R2006a 之前推出

另请参阅

| | | | | | (System Identification Toolbox)