在Matlab中的Wigner-Ville分布上应用窗口函数 [英] To apply window function on Wigner-Ville Distribution in Matlab

查看:620
本文介绍了在Matlab中的Wigner-Ville分布上应用窗口函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在考虑此处如何创建重叠64的Hamming-64窗口. 它是由

We were thinking here how to create Hamming-64 window of overlap 64. It is done by

h = hamming(64);
h2 = hamming(38);
h = conv(h, h2);

现在,我们正在考虑如何在 tfrwv.m 没有用于窗口函数的任何参数.

Now, we are thinking how you can apply this window function to the resulted variabels of the Wigner-Ville Distribution function of Auger et al in Time-Frequency Toolbox. The function tfrwv.m does not have any parameter for window function.

所以我们有这些变量

[B,T,F] = tfrwv(data, 1:length(data), length(data));

此处是对相关问题,但不完全相同. 有人说将window函数应用于结果

Here is one answer to related problem, but not completely the same. One says that apply the window function to the results

逐点相乘

h 的尺寸是101x1的两倍,而 T F 的尺寸是5001x1的两倍. 因此,如果逐点相乘,似乎需要对窗口矢量进行外推.

The dimensions of h are 101x1 double, while T and F 5001x1 double. So extrapolation seems to be needed to the window vector if multiplying point-by-point.

另一个说明此处

在第二个代码块的大约一半处,我应用了一个窗口 起到缓冲信号的作用.这实际上是一个向量 窗口函数与每个缓冲时间块的乘积 系列数据.我只是用一个偷偷摸摸的对角矩阵把戏来做

About half way through the second code block, I apply a window function to a buffered signal. This is effectively a vector multiplication of the window function with each buffered block of time series data. I just use a sneaky diagonal matrix trick to do it efficiently.

如何将窗口函数应用于变量 B,T, F ?

How can you apply a window function to the variables B, T, and F?

推荐答案

在我对lennon310的答案的第三次扩展中出现了一个错误及其症状. lennon310答案的第4个扩展

There was one mistake and its symptoms in my 3rd extension to lennon310's answer. 4th extension to lennon310's answer

我跑步

h = hamming(64);
h2 = hamming(38);
h = conv(h, h2);    
B = 0; T = 0; F = 0;    
data1 = filter(data(1 : 64),1,h); [B,T,F] = tfrwv(data1, 1:length(data1), length(data1));    
for i=1:133
    data1 = filter(data( 1 + i*37 : 64 + i*37 ),1,h); [b,t,f] = tfrwv(data1, 1:length(data1), length(data1));    
    B = [B b']; T = [T t]; F = [F; f];       
end
data1 = filter(data(4959 : 5001),1,h); [b,t,f] = tfrwv(data1, 1:length(data1), length(data1));    
B = [B b']; T = [T t]; F = [F; f];       
T = 49.8899*T;      % dummy constant to get appropriate time interval

并获得这样的图片

我还没有在一张照片中显示所有细峰. 此处.

I have not managed to show all thin peaks in one picture. A new question about it here.

我正在通过以下方式密谋

I am plotting this by

t = 1/360; % 360 samples per second
fs = 360.5;
imagesc(T*t, F*fs, abs(B))

算法正在将点累加到正确的尺寸. 我不确定乘以虚拟常量是否是更早开始的正确方法.

The algorithm is accumulating the points to the right dimension. I am not sure if multiplying by the dummy constant is the right way to go earlier.

这篇关于在Matlab中的Wigner-Ville分布上应用窗口函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆