notch_filter.m
上传用户:qili168
上传日期:2007-10-24
资源大小:16k
文件大小:3k
源码类别:

数据结构

开发平台:

Matlab

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
  2. %
  3. %   notch_filter.m
  4. % 50Hz notch filter
  5. % sample frequency=400
  6. %
  7. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
  8. clear all;
  9. clc;
  10. b=[1 -sqrt(2) 1];
  11. a=[1 -sqrt(2)*0.999 0.999];
  12. [db, mag, pha, grd, w]=freqz_m(b, a);        
  13. subplot(221); plot(w*200/pi, db); title(' Magnitude Response' );
  14. xlabel('frequency in Hz'); ylabel('dB'); axis([0, 100, -200, 5]);
  15. set(gca, 'XTickMode', 'manual', 'XTick', [0, 50, 100]); 
  16. set(gca, 'YTickmode', 'manual', 'YTick', [-200, -100, 0]); grid
  17. title('Notch filter response');
  18. t0=1:8000;
  19. t=1:256;
  20. t1=1:100;
  21. t2=1:128;
  22. x=sin(2*pi*50*t0/400)+0.5*sin(2*pi*100*t0/400);
  23. x1=x(t);
  24. y=filter(b,a,x1);
  25. subplot(222); plot(x1);
  26. title('Original waveform');
  27. X=fft(x1);
  28. subplot(223); plot(t2*400/256,abs(X(t2)));
  29. xlabel('frequency in Hz'); ylabel('|H|'); axis([0, 200, 0, 150]);
  30. title('Spectrum for original');
  31. set(gca, 'XTickMode', 'manual', 'XTick', [0, 50, 100, 150]); 
  32. set(gca, 'YTickmode', 'manual', 'YTick', [50, 100]); grid
  33. y=filter(b,a,x);
  34. x1=y(t+7600);
  35. X=fft(x1);
  36. subplot(224); plot(t2*400/256,abs(X(t2)));
  37. xlabel('frequency in Hz'); ylabel('|H|'); axis([0, 200, 0, 150]);
  38. title('Spectrum after filter'); 
  39. set(gca, 'XTickMode', 'manual', 'XTick', [0, 50, 100, 150]); 
  40. set(gca, 'YTickmode', 'manual', 'YTick', [50, 100]); grid
  41. figure(2);
  42. subplot(611);plot(x(t1)); axis([1, 100, -1.5, 1.5]); ylabel('input x');
  43. set(gca, 'YTickmode', 'manual', 'YTick', [-1,-0.5,0, 0.5,1]); grid
  44. subplot(612);plot(y); axis([1, 100, -1.5, 1.5]); ylabel('first');
  45. set(gca, 'YTickmode', 'manual', 'YTick', [-1,-0.5,0,0.5,1]); grid
  46. subplot(613);plot(y); axis([401, 500, -1.5, 1.5]); ylabel('second');
  47. set(gca, 'YTickmode', 'manual', 'YTick', [-1,-0.5,0, 0.5,1]); grid
  48. subplot(614);plot(y); axis([1201, 1300, -1.0, 1.0]); ylabel('forth');
  49. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
  50. subplot(615);plot(y); axis([2000, 2100, -1.0, 1.0]); ylabel('sixth');
  51. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
  52. subplot(616);plot(y); axis([3601, 3700, -1.0, 1.0]); ylabel('tenth');
  53. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
  54. figure(3);
  55. subplot(611);plot(y); axis([4401, 4500, -1, 1]); ylabel('twelfth');
  56. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
  57. subplot(612);plot(y); axis([5201, 5300, -1.0, 1.0]); ylabel('fourteenth');
  58. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
  59. subplot(613);plot(y); axis([6001, 6100, -1.0, 1.0]); ylabel('sixteenth');
  60. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5,0, 0.5]); grid
  61. subplot(212);plot(y); axis([7601, 7650, -1.0, 1.0]); ylabel('twentieth');
  62. set(gca, 'YTickmode', 'manual', 'YTick', [-0.5, 0, 0.5]); grid