【发布时间】:2017-07-24 17:24:14
【问题描述】:
我使用 MATLAB 应用 Matching Pursuit 来近似信号。我的问题是我很难将所选原子的时频表示可视化。我正在尝试生成类似于下图 (source) 的 Wigner 图。
我查看了 Wavelet Toolbox、Signal Processing Toolbox 以及开源 Time-Frequency Toolbox,但我可能只是使用了错误的参数,因为我在信号处理方面的经验非常有限。
示例
使用this data 我的目标是从上面重现情节。
% fit the signal using MP
itermax = 50;
signal = load('signal.txt');
dict = wmpdictionary(length(signal));
[signal_fit, r, coeff, iopt, qual, X] = wmpalg('OMP', signal, dict, ...
'itermax', itermax);
% wigner plot of the simulated signal
tfrwv(signal_fit) % wigner-ville function from time-frequency toolbox
% wigner plot of each atom
atoms = full(dict(:, iopt)) % selected atoms
for i = 1:itermax
tfrwv(atoms(:, i))
end
不幸的是,结果图都没有接近目标可视化。请注意,在示例中,我使用 tfrwv 和标准参数,我使用它打开的 GUI 进行调整。
非常感谢您的帮助。
更新
我想我现在已经明白,需要使用 Gabor 原子来获得形状类似于拉伸高斯的 blob。不幸的是,信号处理工具箱的预定义字典中没有 Gabor 函数。但是,this question 帮助我实现了所需的字典,这样我得到的原子看起来与示例非常相似:
由于我的情节接近但并不完美,还有两个问题悬而未决:
- 我们在第一个示例中看到的所有 blob 能否仅由 Gabor 原子建模,还是我需要另一个函数字典?
- 如何将单个图像 c 图组合成一个可视化?
【问题讨论】:
-
也许您可以使用图像的标题来编写自己的可视化代码,而不是使用
tfrwv。 “热图中的每个像素(顶部)代表一个原子(根据水平位置以时间为中心且频率与高度对应的小波)。像素的颜色给出了相应小波原子与信号的内积(底部)。”你有你的原子,所以现在你只需要取内积。 -
感谢您的评论。我认为绘制原子不是主要问题。请查看我当前状态的更新。
标签: matlab signal-processing time-frequency