使用 MATLAB,我应用 Matching Pursuit 来近似信号。我的问题是我很难将所选原子的时频表示可视化。我正在尝试生成类似于下图(source)的 Wigner 图。
我查看了 Wavelet Toolbox、Signal Processing Toolbox 以及开源 Time-Frequency Toolbox,但我可能只是使用了错误的参数,因为我在信号处理方面的经验非常有限。
例子
使用这些数据,我的目标是从上面重现情节。
% 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 函数。但是,这个问题帮助我实现了所需的字典,这样我得到的原子看起来与示例非常相似:
由于我的情节接近但并不完美,因此仍有两个问题悬而未决:
- 我们在第一个示例中看到的所有 blob 都可以仅由 Gabor 原子建模,还是我需要另一个函数字典?
- 如何将单个图像图组合成一个可视化?