声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6102|回复: 18

[小波] 自编程序分享-Wigner-Ville- Distribution

[复制链接]
发表于 2007-4-19 04:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 牛小贱 于 2014-7-4 23:42 编辑
  1. function [WVD] = WignerVille(Sig,SampFreq,FreqBins);
  2. %           Sig      : 输入信号
  3. %    FreqBins       : 频率轴划分区间数(默认为512)
  4. %  SampFreq       : 信号的采样频率
  5. %         WVD       : 计算结果

  6. if (nargin < 1),
  7.     error('At least one input required');
  8. end;
  9. Sig = hilbert(real(Sig));        % 计算信号的解析信号
  10. SigLen = length(Sig);           %  获取信号的长度   
  11. if(nargin < 3),
  12.     FreqBins = 512;
  13. end
  14. if(nargin < 2),
  15.     SampFreq = 1;
  16. end
  17. FreqBins = 2^nextpow2(FreqBins);  
  18. FreqBins = min(FreqBins, SigLen);
  19. WVD = zeros (FreqBins,SigLen);                       
  20. wait = waitbar(0,'Under calculation, please wait...');
  21. for iIndex = 1:SigLen,
  22.     waitbar(iIndex/SigLen,wait);
  23.     MTau = min([iIndex-1,SigLen-iIndex,round(FreqBins/2)-1]);  
  24.     tau = -MTau : MTau;
  25.     Temp = rem(FreqBins + tau,FreqBins) + 1;
  26.     WVD(Temp,iIndex) = Sig(iIndex + tau) .* conj(Sig(iIndex - tau));    %计算x*(t-1/2τ) x(t+1/2τ)
  27. end;
  28. close(wait);
  29. WVD = fft(WVD)/FreqBins;
  30. f = linspace(0,0.5,FreqBins)*SampFreq;
  31. t = (0: SigLen-1)/SampFreq;
  32. set(gcf,'Position',[20 100 400 300]);            
  33. set(gcf,'Color','w');                                            
  34. mesh(t,f,abs(WVD));
  35. colormap('Jet');
  36. colorbar;
  37. axis([min(t) max(t) min(f) max(f)]);
  38. ylabel('Frequency / Hz');
  39. xlabel('Time / Sec');
  40. title('Wigner-Ville distribution');
复制代码


评分

2

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-4-19 04:35 | 显示全部楼层

WVD测试程序

本帖最后由 牛小贱 于 2014-7-4 23:44 编辑
  1. function TestWVD(),

  2. % SampFreq = 500;
  3. %
  4. % t = 0:1/SampFreq:2;
  5. %
  6. % Sig = sin(50*2*pi*t+50*pi*t.^2);
  7. SampFreq = 100;
  8. t = 0 : 1/SampFreq : 15;

  9. c1 = 2 * pi * 10;            % initial frequency of the chirp excitation
  10. c2 = 2 * pi * 2.5;           % set the speed of frequency change be 1 Hz/second
  11. c3 = 1 * pi * 1/1.5;
  12. c4 = 2 * pi * -1/40;

  13. Sig = sin(c1 * t + c2 * t.^2 / 2 + c3 * t.^3 /3 + c4 * t.^4 /4);   % get the A(t)
  14. %Sig = Sig + sin((1.2*c1 * t + c2 * t.^2 / 2 + c3 * t.^3 /3 + + c4 * t.^4 /4));


  15. figure(1)
  16. plot(t,Sig);
  17. axis tight
  18. xlabel('Time/Sec')

  19. figure(2)
  20. Freq = linspace(0,SampFreq,length(t));
  21. Spec = 2*fft(Sig)/length(t);
  22. plot(Freq(1:end/2),abs(Spec(1:end/2)));
  23. axis tight
  24. xlabel('Frequency /Hz')

  25. figure(3)
  26. pause
  27. WignerVille(Sig, SampFreq,512);
复制代码


评分

2

查看全部评分

发表于 2008-3-15 15:43 | 显示全部楼层
非常感谢!!!
发表于 2008-4-9 11:13 | 显示全部楼层
太帅了:handshake
发表于 2008-4-22 11:01 | 显示全部楼层
非常感谢!非常感谢!:lol
发表于 2009-12-1 10:15 | 显示全部楼层
:victory: ,非常感谢啊,学习一下
发表于 2010-1-4 11:28 | 显示全部楼层
学习了。。。。
发表于 2010-1-12 14:38 | 显示全部楼层

谢谢!

非常谢谢!
发表于 2010-1-13 17:21 | 显示全部楼层
Thank you for your sharing.
发表于 2011-5-18 17:10 | 显示全部楼层
学习一下
发表于 2011-5-30 11:05 | 显示全部楼层
非常感谢楼主!!!!!
发表于 2011-7-7 22:32 | 显示全部楼层
太厉害了!
发表于 2011-7-11 21:06 | 显示全部楼层
恩,学习一下
发表于 2011-11-14 00:27 | 显示全部楼层
非常感谢楼主!
发表于 2012-3-9 22:02 | 显示全部楼层
很好,楼主很 牛
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-4-19 07:40 , Processed in 0.066705 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表