Main Content

信号分析器

可视化和比较多个信号和频谱

说明

信号分析器是一款交互式工具,用于在时域、频域和时频域中可视化、预处理、测量、分析和比较信号。使用该 App,您可以:

  • 轻松访问 MATLAB® 工作区中的所有信号

  • 对信号进行平滑处理、滤波、重采样、去趋势、去噪、复制、提取、重命名和编辑,无需离开该 App

  • 添加和应用自定义预处理函数

  • 同时可视化和比较信号的多种波形、频谱、持久性、频谱图和尺度图表示

  • 测量数据和信号统计量

通过信号分析器可同时和在同一视图中处理不同持续时间的许多信号。

有关详细信息,请参阅使用信号分析器

  • 您需要 Wavelet Toolbox™ 许可证才能使用尺度图视图以及对信号应用小波去噪。

Signal Analyzer app

打开 信号分析器 App

  • MATLAB 工具条:在 App 选项卡的信号处理和通信下,点击 App 图标。

  • MATLAB 命令提示符:输入 signalAnalyzer

示例

全部展开

您可以在信号分析器中调节分析窗的频谱泄漏来解析正弦波。

生成一个以 100 Hz 的频率进行 2 秒采样的双通道信号。

  1. 第一个通道由一个 20 Hz 的音调和一个 21 Hz 的音调组成。两个音调的振幅均为单位振幅。

  2. 第二个通道也有两个音调。一个音调的振幅为单位振幅,频率为 20 Hz。另一个音调的振幅为 1/100 的振幅,频率为 30 Hz。

fs = 100;

t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t)+[1 1/100].*sin(2*pi*[21 30].*t);

将信号嵌入白噪声中。指定信噪比为 40 dB。

x = x + randn(size(x)).*std(x)/db2mag(40);

打开信号分析器并绘制信号。在分析器选项卡上,选择信号表中的信号,点击时间值并选择 Sample Rate and Start Time。将采样率指定为 fs Hz,并将开始时间指定为 0 秒。在显示选项卡上,点击频谱以将频谱图添加到显示画面中。

点击频谱选项卡。用于控制频谱泄漏的滑块位于中间位置,对应于约 1.28 Hz 的分辨率带宽。第一个通道中的两个音调未得到解析。第二个通道中的 30 Hz 音调可见,尽管比另一个音调弱得多。

增加泄漏,使分辨率带宽约为 0.83 Hz。第二个通道中的弱音调被清楚地解析。

将滑块移至最大值。分辨率带宽约为 0.5 Hz。第一个通道中的两个音调得到解析。第二个通道中的弱音调被大窗旁瓣所掩盖。

点击显示画面选项卡。使用水平缩放放大频率轴。向显示画面添加两个游标,并拖动频域游标来估计音调的频率。

将录制的一段电动牙刷音频读入 MATLAB® 中。信号以 48 kHz 进行采样。牙刷在大约 1.75 秒处启动,并保持大约 2 秒。

[y,fs] = audioread("toothbrush.m4a");

打开信号分析器,将信号从工作区浏览器拖到信号表中。通过在信号表中选择信号并点击分析器选项卡上的时间值,向信号添加时间信息。选择 Sample Rate and Start Time 并输入 fs 作为采样率。

显示画面选项卡上,点击显示网格以创建一个由显示画面组成的 2×2 网格。选择每个显示画面,点击频谱以添加一个频谱视图,然后点击时间以删除时间视图。将信号拖到所有四个显示画面上。

点击频谱选项卡以修改每个显示画面中的频谱视图。

  1. 点击左上角的显示画面以将其选中。移动泄漏滑块,直到泄漏值为 32。

  2. 点击右上角的显示画面以将其选中。在分辨率类型部分中,选择窗长度。在窗长度部分中,选择指定并指定窗长度为 1500 个采样。在窗选项部分中,选择 Rectangular 窗,并指定重叠百分比为 20。

  3. 点击左下角的显示画面以将其选中。在分辨率类型部分中,选择窗长度。在窗长度部分中,选择指定并指定窗长度为 500 个采样。在窗选项部分中,选择 Hamming 窗,并指定重叠百分比为 50。在 NFFT 部分中,指定 550 个离散傅里叶变换点。

  4. 点击右下角的显示画面以将其选中。在分辨率类型部分中,选择窗长度。在窗长度部分中,选择指定并指定窗长度为 5000 个采样。在窗选项部分中,选择一个 Chebyshev 窗,指定旁瓣衰减为 50 dB,重叠百分比为 90%。

您可以看到一些视图显示更高的分辨率,但泄漏更高;而另一些视图泄漏更低,但以牺牲分辨率为代价。

相关示例

编程用途

全部展开

输入 signalAnalyzer 打开信号分析器

signalAnalyzer(sig) 打开信号分析器,导入并绘制信号 sig。如果该 App 已打开,则它会在当前显示画面中绘制 sig。如果 sig 已绘制但发生了更改,则函数调用会更新绘图。

sig 可以是工作区中的变量,也可以是 MATLAB 表达式。sig 可以是:

  • 每列都有独立信号的向量或矩阵。

  • 时间值指定为持续时间的 timetable

  • timeseries 对象。

有关详细信息,请参阅Data Types Supported by Signal Analyzer

默认情况下,App 将信号绘制为采样索引的函数。如果提供了时间信息,或信号具有固有时间信息,则 App 会将信号绘制为时间的函数。

signalAnalyzer(sig1,...,sigN) 导入 N 个信号向量或矩阵,并在当前显示画面中对其绘图。该 App 不支持在同一个函数调用中导入有固有时间信息的信号和没有固有时间信息的信号。

signalAnalyzer(___,'SampleRate',fs) 将采样率 fs 指定为以 Hz 为单位表示的正标量。该 App 使用该采样率绘制一个或多个信号对时间的图(假设起始时间为零)。您可以为没有固有时间信息的信号指定采样率。

signalAnalyzer(___,'SampleTime',ts) 将采样时间 ts 指定为以秒为单位表示的正标量。该 App 使用该采样时间绘制一个或多个信号对时间的图(假设起始时间为零)。您可以为没有固有时间信息的信号指定采样时间。

signalAnalyzer(___,'StartTime',st) 将采样开始时间 st 指定为以秒为单位表示的标量。如果您未指定采样率或采样时间,则 App 假设采样率为 1 Hz。您可以为没有固有时间信息的信号指定开始时间。

signalAnalyzer(___,'TimeValues',tv) 指定向量 tv,其中时间值对应于数据点。tv 可以是实数值向量,其值以秒为单位表示。tv 也可以是 duration 数组。tv 中的值必须唯一且不能为 NaN,但它们不需要均匀间隔。所有输入信号必须具有与 tv 相同的长度。您可以为不带固有时间信息的信号指定时间值向量。

滤波和尺度图视图不支持非均匀采样信号。

版本历史记录

在 R2016a 中推出

全部展开