scal2frq.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:2k
源码类别:

波变换

开发平台:

Matlab

  1. function f = scal2frq(a,wname,delta)
  2. %SCAL2FRQ Scale to frequency.
  3. %   F = SCAL2FRQ(A,'wname',DELTA) returns the
  4. %   pseudo-frequencies corresponding to the scales given by
  5. %   A, the wavelet function 'wname' and the sampling
  6. %   period DELTA.
  7. %
  8. %   SCAL2FRQ(A,'wname') is equivalent to SCAL2FRQ(A,'wname',1)
  9. %
  10. %   Example:
  11. %     %----------------------------------------------------
  12. %     % This example demonstrates that, starting from the
  13. %     % periodic function x(t) = cos(5t), the scal2frq 
  14. %     % function translates the scale corresponding to 
  15. %     % the maximum value of the CWT coefficients to a
  16. %     % pseudo-frequency (0.795), which is near to
  17. %     % the true frequency (5/(2*pi) =~ 0.796).
  18. %     %----------------------------------------------------
  19. %     wname = 'db10';
  20. %     A = -64; B = 64; P = 224;
  21. %     delta = (B-A)/(P-1);
  22. %     t = linspace(A,B,P);
  23. %     omega = 5; x = cos(omega*t);
  24. %     freq  = omega/(2*pi);
  25. %     scales = [0.25:0.25:3.75];
  26. %     TAB_PF = scal2frq(scales,wname,delta);
  27. %     [dummy,ind] = min(abs(TAB_PF-freq));
  28. %     freq_APP  = TAB_PF(ind);
  29. %     scale_APP = scales(ind);
  30. %     str1 = ['224 samples of x = cos(5t) on [-64,64] - ' ...
  31. %             'True frequency = 5/(2*pi) =~ ' num2str(freq,3)];
  32. %     str2 = ['Array of pseudo-frequencies and scales: '];
  33. %     str3 = [num2str([TAB_PF',scales'],3)];
  34. %     str4 = ['Pseudo-frequency = ' num2str(freq_APP,3)];
  35. %     str5 = ['Corresponding scale = ' num2str(scale_APP,3)];
  36. %     figure; cwt(x,scales,wname,'plot'); ax = gca; colorbar;
  37. %     axTITL = get(ax,'title');
  38. %     axXLAB = get(ax,'xlabel');
  39. %     set(axTITL,'String',str1);
  40. %     set(axXLAB,'String',[str4,'  -  ' str5]);
  41. %     clc; disp(strvcat(' ',str1,' ',str2,str3,' ',str4,str5))
  42. %
  43. %   See also CENTFRQ.
  44. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 04-Mar-98.
  45. %   Last Revision: 14-May-2003.
  46. %   Copyright 1995-2004 The MathWorks, Inc.
  47. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:41:40 $
  48. if isempty(a) , f = a; return; end
  49. if nargin == 2, delta = 1; end
  50. err = (min(size(a))>1) | (min(a)<eps);
  51. if err
  52.     error('Invalid Value for Scales a !')
  53. end
  54. if delta <= 0
  55.     error('Invalid Value for Delta !')
  56. end
  57. % Compute pseudo-frequencies
  58. f = centfrq(wname)./(a.*delta);