MAIN.M
上传用户:speoil
上传日期:2022-06-23
资源大小:224k
文件大小:1k
源码类别:

波变换

开发平台:

Matlab

  1. % the main function of the project! 
  2. % note: auread the sound file first
  3. function y = main(x)
  4. x = normalize(x);
  5. x=x';
  6. x_padded = zero_pad(x);
  7. le=32;
  8. h=daubcqf(le,'min');
  9. L=7;
  10. [x_padded, L] = mdwt(x_padded, h, L);
  11. %load OTTFF
  12. L3_x = x_padded(1025:2048);   % consider the 3rd octave
  13. U = mean(abs(L3_x))/5;
  14. if(U >= .0010)   % the number is 1, 4, or 5
  15. L4_x = x_padded(513:813);  % consider the first part of the 4th octave
  16. s = find(abs(L4_x/5.3) > .005); 
  17. S=length(s);
  18. if(S >= 100)
  19. y = 4;
  20. elseif(S <= 80 & S >= 50)
  21. y = 1;
  22. elseif(S <= 35)
  23. y = 5;
  24. else
  25. one_diff = normdiff(ONE,x_padded);
  26. four_diff = normdiff(FOUR,x_padded);
  27. five_diff = normdiff(FIVE,x_padded);
  28. diff1 = [one_diff four_diff five_diff];
  29. M = max(diff1);
  30. if (M == one_diff)
  31. y = 1;
  32. elseif (M == four_diff);
  33. y = 4;
  34. else
  35. y = 5;
  36. end
  37. end
  38. else   % the number is 2 or 3
  39. L2 = x_padded(2049:4096); % look at the 2nd octave 
  40. L2 = L2/abs(max(L2)); 
  41. a = find(abs(L2) > .4);
  42. A=length(a);
  43. if(A >= 90)
  44. y = 2;
  45. elseif(A < 50)
  46. y = 3;
  47. else
  48. two_diff = normdiff(TWO,x_padded);
  49. three_diff = normdiff(THREE,x_padded);
  50. diff2 = [two_diff three_diff];
  51. M = max(diff2);
  52. if (M == two_diff)
  53. y = 2;
  54. else 
  55. y = 3;
  56. end
  57. end
  58. end
  59. fprintf('n The number is   %d! nn', y)