主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

spectrum

绘制或返回时间序列模型的输出功率谱或线性输入/输出模型的扰动谱

说明

绘制结果

spectrum(sys) 绘制辨识的时间序列模型 sys 的输出功率谱或辨识的输入/输出模型 sys 的扰动谱。该函数自动选择频率范围和点数。

  • 如果 sys 是时间序列模型,则 sys 代表系统:

    y(t)=He(t)

    这里,e(t) 是高斯白噪声,y(t) 是观察到的输出。

    spectrum 图 |H'H|,按 e(t) 的方差和采样时间缩放。

  • 如果 sys 是输入/输出模型,则 sys 代表系统:

    y(t)=Gu(t)+He(t)

    这里,u(t) 是测量输入,e(t) 是高斯白噪声,y(t) 是观察到的输出。

    在这种情况下,spectrum 绘制了干扰分量 He(t) 的频谱。

对于采样时间为 Tsspectrum 的离散时间模型,使用变换 z=ejωTs 将单位圆映射到实频率轴。该函数仅绘制小于奈奎斯特频率 π/Ts 的频率的频谱,并且在未指定 Ts 时使用 1 个时间单位的默认值。

示例

spectrum(sys,{wmin, wmax}) 创建从 wminwmax 频率范围的频谱图。

示例

spectrum(sys,w) 使用向量 w 中指定的频率创建频谱图。

spectrum(sys1,...,sysN,w) 在单个图上创建几个辨识模型的频谱图。w 参量是可选的。

您可以为每个模型指定颜色、线型和标记。例如,spectrum(sys1,'r',sys2,'y--',sys3,'gx') 使用红色标记表示 sys1,使用黄色短划线标记表示 sys2,使用绿色 x 标记表示 sys3

示例

返回结果

ps = spectrum(sys,w) 返回指定频率 wsys 功率谱幅度。此语法不绘制频谱。

[ps,wout] = spectrum(sys) 返回计算输出功率谱的频率向量 wout

[ps,wout,sdps] = spectrum(sys) 返回功率谱的估计标准差。

示例

全部折叠

加载时间序列估计数据。

load iddata9 z9

使用最小二乘法估计四阶 AR 模型。

sys = ar(z9,4,'ls');

绘制模型的输出频谱。

spectrum(sys);

Figure contains an axes object. The axes object with title From: e@y1 To: y1, ylabel Power (dB) contains an object of type line. This object represents sys.

要更改图中的显示选项,右键点击该图以访问上下文菜单。例如:

  • 要查看仿真响应的置信域,请选择 Characteristics > Confidence Region

  • 要指定要绘制的标准差数,请选择 Properties。然后,在属性编辑器中,选择 Options 选项卡,并在 Number of standard deviations for display 中指定标准差数。默认值 1 个标准差。

加载估计数据。

load iddata1 z1;

估计单输入单输出状态空间模型。

sys = n4sid(z1,2);

绘制模型的噪声频谱。指定频率范围从 0.1 到 50 弧度/秒。

spectrum(sys,{0.1,50});

Figure contains an axes object. The axes object with title From: e@y1 To: y1, ylabel Power (dB) contains an object of type line. This object represents sys.

该函数绘制频谱,但将频率范围限制为奈奎斯特频率约 31.4 rad/s。

创建一个由五个正弦波的总和组成的输入,每个正弦波分布在整个频率范围内。将该信号的频谱与其平方的频谱进行比较。

创建一个延续 20 个周期的正弦波总和输入,每个周期包含 100 个采样。指定信号组合 5 个随机相位的正弦波,使用 10 次试验来找到信号扩散最低的集合。有关此步骤的详细信息,请参阅 idinput

u = idinput([100 1 20],'sine',[],[],[5 10 1]);

创建一个仅输入的 iddata 对象 u,其中包含输入 u 且周期为 100。

u = iddata([],u,1,'per',100);

对输入值进行平方并将其存储在新的 iddata 对象 u2 中。

u2 = u.u.^2;
u2 = iddata([],u2,1,'per',100);

使用 etfeuu2 估计经验传递函数模型。将这些模型的功率谱绘制在一起。使用不同的标记颜色和类型来区分频谱源。

spectrum(etfe(u),'r*',etfe(u2),'+')

Figure contains an axes object. The axes object with title From: e@u1 To: u1, ylabel Power (dB) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent untitled1, untitled2.

该图显示了一些频率分裂,其中基于 u2 的频谱与基于 u 的频谱不一致,而是包含两个与某些基于 u 的点相邻的频谱点。这种分裂表明了平方系统的非线性。

输入参数

全部折叠

辨识模型,指定为 idpoly 对象、idproc 对象、idss 对象或 idtf 对象。

  • 如果 sys 是时间序列模型,则 sys 代表系统:

    y(t)=He(t)

    这里,e(t) 是高斯白噪声,y(t) 是观察到的输出。

  • 如果 sys 是输入/输出模型,则 sys 代表系统:

    y(t)=Gu(t)+He(t)

    这里,u(t) 是测量输入,e(t) 是高斯白噪声,y(t) 是观察到的输出。

绘制频谱的频率范围的最小频率,指定为正数。

在 rad/TimeUnit 中指定 wmin,其中 TimeUnitsys.TimeUnit

有关指定 wmin 的示例,请参阅 绘制 SISO 线性辨识模型的噪声谱

绘制频谱的频率范围的最大频率,指定为正数。默认情况下,该函数使用 sys 的奈奎斯特频率作为 wmax

在 rad/TimeUnit 中指定 wmax,其中 TimeUnitsys.TimeUnit。如果您指定 wmax 大于奈奎斯特频率,则 spectrum 将使用奈奎斯特频率。

有关指定 wmax 的示例,请参阅 绘制 SISO 线性辨识模型的噪声谱

绘制频谱的频率,指定为正数向量。

rad/TimeUnit 中指定 w,其中 TimeUnitsys.TimeUnit

输出参量

全部折叠

功率谱幅度,以数值向量或数值数组的形式返回。

  • 对于单输出模型,ps 是一个 1×1 的 Nw 数组,其中 Nw 是频率向量的长度。

  • 对于多输出模型,ps 是一个 Ny×Ny×Nw 数组,其中 Ny 是输出数目。ps(:,:,k) 对应于 w(k) 频率的功率谱。

对于以 dB 为单位的幅度值,请输入 psdb = 10*log10(ps)

绘制频谱的频率,以 rad/TimeUnit 为单位的数值向量返回,其中 TimeUnitsys.TimeUnit。如果您提供 w 作为输入参量,该函数将返回 wout 中的相同向量。

功率谱的估计标准差,以与 ps 相同维度的数组形式返回。

版本历史记录

在 R2012a 中推出