主要内容

nyquist

动态系统的奈奎斯特响应

说明

[re,im,wout] = nyquist(sys) 返回在向量 wout 中每个频率下的频率响应的实部和虚部。该函数根据系统动态特性自动确定 wout 中的频率。此语法不会生成图表。

示例

[re,im,wout] = nyquist(sys,w) 返回在 w 指定的频率下的响应数据。

  • 如果 w{wmin,wmax} 形式的元胞数组,则 wout 包含范围在 wminwmax 之间的频率。

  • 如果 w 是频率向量,则 wout = w

示例

[re,im,wout,sdre,sdim] = nyquist(sys,w) 还返回辨识模型 sys 的频率响应的实部和虚部的估计标准差。如果省略 w,则函数会根据系统动态特性自动确定 wout 中的频率。

示例

nyquist(___) 使用所有先前输入参量组合的默认绘图选项创建 sys 的频率响应的奈奎斯特图。该图显示了系统响应的实部和虚部随频率变化的函数关系。如需更多绘图自定义选项,请使用 nyquistplot

  • 要在同一图上绘制多个动态系统的响应,您可以将 sys 指定为以逗号分隔的模型列表。例如,nyquist(sys1,sys2,sys3) 在同一图上绘制三个模型的响应。

  • 要为图中的每个系统分别指定一种颜色、线型和标记,请为每个系统指定 LineSpec 值。例如,nyquist(sys1,LineSpec1,sys2,LineSpec2) 绘制两个模型并指定它们的绘图样式。有关指定 LineSpec 值的详细信息,请参阅 nyquistplot

示例

全部折叠

创建以下传递函数并绘制其奈奎斯特响应。

H(s)=2s2+5s+1s2+2s+3.

H = tf([2 5 1],[1 2 3]);
nyquist(H)

MATLAB figure

nyquist 函数可以显示 M 圆网格,这些 M 圆是恒定闭环幅值的等高线。M 圆被定义为复数的轨迹,其中以下量是全频率常量值。

T(jω)=|G(jω)1+G(jω)|.

这里,ω 是以弧度/TimeUnit 为单位的频率,其中 TimeUnit 是系统时间单位,G 是满足恒定幅值要求的复数的集合。

要显示 M 圆网格,请在绘图中右键点击,然后选择网格。或者,使用 grid 命令。

grid on

MATLAB figure

基于指定的频率范围创建奈奎斯特图。当您要关注特定频率范围内的动态特性时,请使用这种方法。

H = tf([-0.1,-2.4,-181,-1950],[1,3.3,990,2600]);
nyquist(H,{1,100})

MATLAB figure

元胞数组 {1,100} 为奈奎斯特图中的正频率分支指定频率范围 [1,100],为负频率分支指定 [–100,–1]。对于具有实系数的模型,负频率分支是通过对称性获得的。当您以这种方式提供频率界限时,该函数会选择频率响应数据的中间点。

或者,指定用于计算和绘制频率响应的频率点向量。

w = 1:0.1:30;
nyquist(H,w,'.-')

MATLAB figure

nyquist 绘制在指定频率下的频率响应。

在同一奈奎斯特图上比较多个系统的频率响应。

创建动态系统。

rng(0)
sys1 = tf(3,[1,2,1]);
sys2 = tf([2 5 1],[1 2 3]);
sys3 = rss(4);

创建一个显示所有系统的奈奎斯特图。

nyquist(sys1,sys2,sys3)
legend('Location','southwest')

MATLAB figure

使用 LineSpec 输入参量为奈奎斯特图中的每个系统指定线型、颜色或标记。

sys1 = tf(3,[1,2,1]);
sys2 = tf([2 5 1],[1 2 3]);
nyquist(sys1,'o:',sys2,'g')

MATLAB figure

第一个 LineSpec,即 'o:',为 sys1 的响应指定带有空心圆点标记的点线。第二个 LineSpec,即 'g',为 sys2 的响应指定绿色实线。

计算一个 SISO 系统的频率响应的实部和虚部。

如果不指定频率,nyquist 会根据系统动态特性选择频率,并在第三个输出参量中返回这些频率。

H = tf([2 5 1],[1 2 3]);
[re,im,wout] = nyquist(H);

由于 H 是 SISO 模型,因此 reim 的前两个维度均为 1。第三个维度是 wout 中频率的数目。

size(re)
ans = 1×3

     1     1   141

length(wout)
ans = 
141

因此,沿 re 的第三个维度的每个条目给出在 wout 中的对应频率下的响应的实部。

对于此示例,创建一个 2 输出 3 输入的系统。

rng(0,'twister');
H = rss(4,2,3);

对于此系统,nyquist 在一个图窗中的一个单独绘图中绘制每个 I/O 通道的频率响应。

nyquist(H)

MATLAB figure

计算这些响应在 1 和 10 弧度之间的 20 个频率下的实部和虚部。

w = logspace(0,1,20);
[re,im] = nyquist(H,w);

reim 是三维数组,其中前两个维度对应于 H 的输出和输入维度,第三个维度是频率的数目。例如,检查 re 的维度。

size(re)
ans = 1×3

     2     3    20

因此可以得到如下示例:re(1,3,10) 是从第三个输入到第一个输出的响应的实部,在 w 中的第 10 个频率处计算。同样,im(1,3,10) 包含相同响应的虚部。

计算一个辨识模型的频率响应的实部和虚部的标准差。使用此数据创建响应不确定性的 3σ 图。

加载估计数据 z2

load iddata2 z2;

使用数据确定传递函数模型。使用 tfest 命令需要 System Identification Toolbox™ 软件。

sys_p = tfest(z2,2);

获得一组 512 个频率 w 的频率响应的实部和虚部的标准差。

w = linspace(-10*pi,10*pi,512);
[re,im,wout,sdre,sdim] = nyquist(sys_p,w);

reim 分别是频率响应的实部和虚部,sdresdim 分别是它们的标准差。wout 中的频率与您在 w 中指定的频率相同。

使用标准差数据创建一个对应于置信域的 3σ 图。

re = squeeze(re);
im = squeeze(im); 
sdre = squeeze(sdre);
sdim = squeeze(sdim);
plot(re,im,'b',re+3*sdre,im+3*sdim,'k:',re-3*sdre,im-3*sdim,'k:')
xlabel('Real Axis');
ylabel('Imaginary Axis');

Figure contains an axes object. The axes object with xlabel Real Axis, ylabel Imaginary Axis contains 3 objects of type line.

在同一图上创建一个具有复系数的模型和一个具有实系数的模型的奈奎斯特图。

rng(0)
A = [-3.50,-1.25-0.25i;2,0];
B = [1;0];
C = [-0.75-0.5i,0.625-0.125i];
D = 0.5;
Gc = ss(A,B,C,D);
Gr = rss(4);
nyquist(Gc,Gr)
legend('Complex-coefficient model','Real-coefficient model')

MATLAB figure

该奈奎斯特图始终显示两个分支,一个分支用于正频率,另一个分支用于负频率。箭头指示每个分支的频率增大的方向。对于具有复系数的模型,这两个分支不对称。对于具有实系数的模型,负分支是通过对称性获得的。

输入参数

全部折叠

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

  • 连续时间或离散时间数值 LTI 模型,如 tf (Control System Toolbox)zpk (Control System Toolbox)ss (Control System Toolbox) 模型。

  • 稀疏状态空间模型,如 sparss (Control System Toolbox)mechss (Control System Toolbox) 模型。必须为稀疏模型指定频率网格 w

  • 广义或不确定的 LTI 模型,如 genss (Control System Toolbox)uss (Robust Control Toolbox) 模型。使用不确定模型需要 Robust Control Toolbox™ 软件。

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

    • 对于不确定的控制设计模块,该函数绘制模型的标称值和随机样本。

  • 频率响应数据模型,如 frd 模型。对于此类模型,该函数绘制在模型中定义的频率下的响应。

  • 辨识的 LTI 模型,如 idtfidssidproc 模型。

如果 sys 是模型数组,则图会在同一坐标区中显示该数组中所有模型的响应。

要计算响应的频率,指定为以下项之一:

  • {wmin,wmax} 形式的元胞数组 - 计算 wminwmax 范围内的频率下的响应。如果 wmax 大于 sys 的奈奎斯特频率,则仅计算不高于奈奎斯特频率时的响应。

  • 频率向量 - 计算在每个指定频率下的响应。例如,使用 logspace 生成一个具有对数间距频率值的行向量。向量 w 可以同时包含正频率和负频率。

  • [] - 根据系统动态特性自动选择频率。

以 rad/TimeUnit 为单位指定频率,其中 TimeUnit 是模型的 TimeUnit 属性。

输出参量

全部折叠

系统响应的实部,以三维数组形式返回。此数组的维度为(系统输出数目)×(系统输入数目)×(频率点数目)。

系统响应的虚部,以三维数组形式返回。此数组的维度为(系统输出数目)×(系统输入数目)×(频率点数目)。

函数返回系统响应时所处的频率,以列向量形式返回。该函数根据模型动态特性选择频率值,除非您使用 w 指定频率。

wout 还包含具有复系数的模型的负频率值。

频率值以弧度/TimeUnit 为单位,其中 TimeUnitsysTimeUnit 属性的值。

辨识模型的响应的实部的估计标准差,以三维数组形式返回,具有与 re 相同的维度。

如果 sys 不是辨识的 LTI 模型,则 sdre[]

辨识模型的响应的虚部的估计标准差,以三维数组形式返回,具有与 im 相同的维度。

如果 sys 不是辨识的 LTI 模型,则 sdim[]

提示

  • 右键点击菜单中提供了两个专门应用于奈奎斯特图的缩放选项:

    • 完整视图 - 裁剪奈奎斯特图的无界分支,但仍包含临界点 (–1, 0)。

    • 放大区间(-1,0) - 围绕临界点 (–1, 0) 进行缩放。

  • 当您需要额外的绘图自定义选项时,请改用 nyquistplot

  • 使用 nyquist 创建的绘图不支持以字符串数组或字符向量元胞数组形式指定的多行标题或标签。要指定多行标题和标签,请使用包含 newline 字符的单个字符串。

    nyquist(sys,u,t)
    title("first line" + newline + "second line");

版本历史记录

在 R2006a 之前推出

全部展开