信号分析器
可视化和比较多个信号和频谱
说明
信号分析器是一款交互式工具,用于在时域、频域和时频域中可视化、预处理、测量、分析和比较信号。使用该 App,您可以:
轻松访问 MATLAB® 工作区中的所有信号
填充缺失数据 (自 R2024a 起);无需离开 App 即可对信号进行平滑处理、滤波、重采样、去趋势、去噪、提取和编辑
添加和应用自定义预处理函数
播放音频信号 (自 R2024a 起)
同时可视化和比较信号的多种波形、频谱、持久性、频谱图和尺度图表示
测量数据和信号统计量
通过信号分析器可同时和在同一视图中处理不同持续时间的许多信号。
有关详细信息,请参阅使用信号分析器。
更多
您需要 Wavelet Toolbox™ 许可证才能使用尺度图视图以及对信号应用小波去噪。
打开 信号分析器 App
MATLAB 工具条:在 App 选项卡的信号处理和通信下,点击 App 图标。
MATLAB 命令提示符:输入
signalAnalyzer
。
示例
查找并填充音频文件中的缺失数据
加载以 采样的语音信号。该文件包含女声读“MATLAB®”的录音。
load mtlb
为了仿真 70% 的音频数据缺失的情况,随机为信号赋 NaN
值。
rng(2024) numToReplace = round(length(mtlb) * 0.70); missing = randperm(length(mtlb), numToReplace); mtlbMissing = mtlb; mtlbMissing(missing) = NaN;
打开信号分析器,将 mtlb
和 mtlbMissing
从工作区浏览器拖到信号表中。在分析器选项卡上,选择信号表中的信号,点击时间值并选择 Sample Rate and Start Time
。将采样率指定为 Fs
Hz,并将开始时间指定为 0
秒。点击显示网格创建两个并排显示。在左侧显示中绘制 mtlb
,在右侧显示中绘制 mtlbMissing
。要收听 mtlb
音频信号,请选择该信号并点击显示选项卡下工具条的回放部分中的播放。要重复播放信号,请在播放前选择循环播放。
选择具有缺失数据的信号,点击分析器选项卡下的预处理进入预处理模式,然后从预处理选项列表中选择 Fill Missing
。使用函数参数面板调整 Fill Missing
参数。选择 Autoregressive model
并点击应用以填充缺失信号。点击全部接受以保存预处理结果并退出该模式。有关替代填充函数的详细信息,请参阅 fillmissing
和 fillgaps
。
您现在可以使用播放按钮播放经过填充的信号。要查看填充缺失信号对频谱图的影响,请点击显示选项卡上的时频。在频谱图选项卡上,指定时间分辨率为 20 毫秒、相邻段之间的重叠为 80
%。将功率范围设置为 –50
dB 到 –10
dB。点击左侧的显示画面并重复上述步骤。
通过调节窗泄漏来解析音调
您可以在信号分析器中调节分析窗的频谱泄漏来解析正弦波。
生成一个以 100 Hz 的频率进行 2 秒采样的双通道信号。
第一个通道由一个 20 Hz 的音调和一个 21 Hz 的音调组成。两个音调的振幅均为单位振幅。
第二个通道也有两个音调。一个音调的振幅为单位振幅,频率为 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 网格。选择每个显示画面,点击频谱以添加一个频谱视图,然后点击时间以删除时间视图。将信号拖到所有四个显示画面上。
点击频谱选项卡以修改每个显示画面中的频谱视图。
点击左上角的显示画面以将其选中。移动泄漏滑块,直到泄漏值为 32。
点击右上角的显示画面以将其选中。在分辨率类型部分中,选择窗长度。在窗长度部分中,选择指定并指定窗长度为 1500 个采样。在窗选项部分中,选择
Rectangular
窗,并指定重叠百分比为 20。点击左下角的显示画面以将其选中。在分辨率类型部分中,选择窗长度。在窗长度部分中,选择指定并指定窗长度为 500 个采样。在窗选项部分中,选择
Hamming
窗,并指定重叠百分比为 50。在 NFFT 部分中,指定 550 个离散傅里叶变换点。点击右下角的显示画面以将其选中。在分辨率类型部分中,选择窗长度。在窗长度部分中,选择指定并指定窗长度为 5000 个采样。在窗选项部分中,选择一个
Chebyshev
窗,指定旁瓣衰减为 50 dB,重叠百分比为 90%。
您可以看到一些视图显示更高的分辨率,但泄漏更高;而另一些视图泄漏更低,但以牺牲分辨率为代价。
相关示例
- Extract Voices from Music Signal
- Modulation and Demodulation Using Complex Envelope
- Find and Track Ridges Using Reassigned Spectrogram
- Declip Saturated Signals Using Your Own Function
- Compute Envelope Spectrum of Vibration Signal
- 求相关信号之间的延迟
- Find Interference Using Persistence Spectrum
- Denoise Noisy Doppler Signal
- Resample and Filter a Nonuniformly Sampled Signal
- 从鲸鱼音频中提取感兴趣的区域
编程用途
signalAnalyzer
输入 signalAnalyzer
打开信号分析器。
signalAnalyzer(sig
)
sig
)signalAnalyzer(
打开信号分析器,导入并绘制信号 sig
)sig
。如果该 App 已打开,则它会在当前显示画面中绘制 sig
。如果 sig
已绘制但发生了更改,则函数调用会更新绘图。
sig
可以是工作区中的变量,也可以是 MATLAB 表达式。sig
可以是:
每列都有独立信号的向量或矩阵。
时间值指定为持续时间的
timetable
。timeseries
对象。
有关详细信息,请参阅Data Types Supported by Signal Analyzer。
默认情况下,App 将信号绘制为采样索引的函数。如果提供了时间信息,或信号具有固有时间信息,则 App 会将信号绘制为时间的函数。
signalAnalyzer(sig1,...,sigN
)
sig1,...,sigN
)signalAnalyzer(
导入 N 个信号向量或矩阵,并在当前显示画面中对其绘图。该 App 不支持在同一个函数调用中导入有固有时间信息的信号和没有固有时间信息的信号。sig1,...,sigN
)
signalAnalyzer(___,'SampleRate',fs
)
fs
)signalAnalyzer(___,'SampleRate',
将采样率 fs
)fs
指定为以 Hz 为单位表示的正标量。该 App 使用该采样率绘制一个或多个信号对时间的图(假设起始时间为零)。您可以为没有固有时间信息的信号指定采样率。
signalAnalyzer(___,'SampleTime',ts
)
ts
)signalAnalyzer(___,'SampleTime',
将采样时间 ts
)ts
指定为以秒为单位表示的正标量。该 App 使用该采样时间绘制一个或多个信号对时间的图(假设起始时间为零)。您可以为没有固有时间信息的信号指定采样时间。
signalAnalyzer(___,'StartTime',st
)
st
)signalAnalyzer(___,'StartTime',
将采样开始时间 st
)st
指定为以秒为单位表示的标量。如果您未指定采样率或采样时间,则 App 假设采样率为 1 Hz。您可以为没有固有时间信息的信号指定开始时间。
signalAnalyzer(___,'TimeValues',tv
)
tv
)signalAnalyzer(___,'TimeValues',
指定向量 tv
)tv
,其中时间值对应于数据点。tv
可以是实数值向量,其值以秒为单位表示。tv
也可以是 duration
数组。tv
中的值必须唯一且不能为 NaN
,但它们不需要均匀间隔。所有输入信号必须具有与 tv
相同的长度。您可以为不带固有时间信息的信号指定时间值向量。
滤波和尺度图视图不支持非均匀采样信号。
版本历史记录
在 R2016a 中推出R2024a: 查找并填充缺失数据
通过查找并填充数据中的空缺,在信号分析器中预处理信号。您可以用常量值、相邻采样的组合或移动平均值来填充缺失数据。您还可以插值或应用自回归模型。
R2024a: 播放音频信号
使用音频播放控件在信号分析器中播放音频信号。
R2023b: 计算和比较更多类型的频谱
在信号分析器中计算频谱时拥有更大的灵活性。控制窗长度、离散傅里叶变换点数和分辨率带宽。
R2023a: 查找并注释信号峰值
执行时域信号的峰值测量。在测量值表中查看信号峰值,并在显示画面上显示为注释标记。
R2020a: 标注按钮已从信号分析器中删除
信号分析器不再打开信号标注器,后者现已作为 App 提供。如果要标注信号,请从 MATLAB 工具条或命令行窗口中打开信号标注器。
另请参阅
App
函数
主题
- Time-Frequency Gallery
- 使用信号分析器
- Edit Sample Rate and Other Time Information
- Data Types Supported by Signal Analyzer
- Spectrum Computation in Signal Analyzer
- Persistence Spectrum in Signal Analyzer
- 信号分析器中的频谱图计算
- Scalogram Computation in Signal Analyzer
- Keyboard Shortcuts for Signal Analyzer
- Signal Analyzer Tips and Limitations
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)