任孝儒 发表于 2012-12-25 10:08

Winger-ville源程序分解信号

% Wigner-Ville分布计算程序
function=SWWignerVille(Sig,SampFreq,FreqBins,GLen,HLen)
%Sig      : 输入信号
%FreqBins : 频率轴划分区间数(默认值:512)
%SampFreq : 信号的采集频率
%alfa   : 窗函数控制参数
%GLen   : 窗函数g的长度(默认值:FreqBins/5)
%HLen   : 窗函数h的长度(默认值:FreqBins/4)
%WVD      :   SWWigner-Ville计算结果
if (nargin<1),
    error('At least 1 input required');
end;
% Sig=hilbert(real(Sig));    % 计算信号的解析信号
SigLen=length(Sig);      % 获取信号的长度
if (nargin<2),
    SampFreq=1;
elseif (nargin<3),
    FreqBins=512;
elseif (nargin<4),
    GLen=floor(FreqBins/5);   
    HLen=floor(FreqBins/4);
end;
FreqBins=2^nextpow2(FreqBins);
FreqBins=min(FreqBins,SigLen);
GLen=GLen+1-rem(GLen,2);
HLen=HLen+1-rem(HLen,2);
GWin=window(@gausswin,GLen);
HWin=window(@gausswin,HLen);
Lg=(GLen-1)/2;
Lh=(HLen-1)/2;
HWin=HWin/HWin(Lh+1);
WVD=zeros(FreqBins,SigLen);
wait=waitbar(0,'Under calculation,please wait...');
for kk=1:SigLen,
    waitbar(kk/SigLen,wait);
    MTau=min();
    k=-min():min();
    SubG=GWin(Lg+1+k);
    SubG=SubG/sum(SubG);
    WVD(1,kk)=sum(SubG.*Sig(kk-k).*conj(Sig(kk-k)));%
    for tau=1:MTau,
      k=-min():min();
      SubG=GWin(Lg+1+k);
      SubG=SubG/sum(SubG);
      R=sum(SubG.*Sig(kk+tau-k).*conj(Sig(kk-tau-k)));
      WVD(1+tau,kk)=HWin(Lh+tau+1)*R;
      R=sum(SubG.*Sig(kk-tau-k).*conj(Sig(kk+tau-k)));
      WVD(FreqBins+1-tau,kk)=HWin(Lh-tau+1)*R;
    end;   
end;
close(wait);
WVD=fft(WVD);
f=linspace(0,0.5,FreqBins)*SampFreq;
t=(0:(SigLen-1))/SampFreq;
set(gcf,'position',);
set(gcf,'color','w');
axes('position',);
mesh(t,f,abs(WVD));
axis();
colorbar;
xlabel('t/s');
ylabel('f/Hz');
title('平滑伪Wigner-Ville分布');

为什么我应用这个做出的图是这样的呢?
为什么我的纵坐标不是20HZ二是0.2水能给改一下?





yghit08 发表于 2012-12-25 16:43

都没看到你怎么调用的这个程序。我想你只是直接调用,并没有做其他设置,所以出这样的结果。
在没有设置采样频率的情况下,直接调用这个程序的结果就是这样---归一化频率后的结果:默认情况下直接调用时采样频率被默认为1,另外分析频率受采样定理的限制,这样一来最后出来的结果都在0.5Hz之内。如果你是利用的时频分析的工具箱操作的话,会有选项栏让重新设置采样频率,这样输入正确的采样频率就能输出正确的结果。
补充:没有必要贴上你的Wigner-Ville分布计算程序,如果不是你自己编写的,如果只是从时频分析工具箱中找到的话。另外,在发帖前请搜索相关的内容!最后,建议删帖!

yazhoulong 发表于 2012-12-28 21:55

用工具包就可以,没有这样麻烦{:{20}:}

任孝儒 发表于 2012-12-29 12:03

yazhoulong 发表于 2012-12-28 21:55 static/image/common/back.gif
用工具包就可以,没有这样麻烦

那你能帮我仿真看看吗

yazhoulong 发表于 2013-1-5 21:10

没有数据,怎么仿呢?
页: [1]
查看完整版本: Winger-ville源程序分解信号