zoukankan      html  css  js  c++  java
  • 音频文件&&IIR滤波器&&加窗

       1:  clc;
       2:  clear all;
       3:  close all;
       4:  [x,fs,bits]=wavread('ding.wav',[1024 5120-1]);
       5:   
       6:  sound(x,fs,bits);
       7:  N=length(x);
       8:   
       9:  mywin1=window(@kaiser,N);%kaiser窗
      10:  mywin2=window(@hamming,N);%hamming窗
      11:  s1=x.*mywin1;%信号加kaiser窗
      12:  s2=x.*mywin2;%信号加hamming窗
      13:  spectrum_origin=abs(fftshift(fft(x,length(x))));%加hamming窗后信号频谱
      14:  spectrum1=abs(fftshift(fft(s1,length(s1))));%加hamming窗后信号频谱
      15:   
      16:  spectrum2=abs(fftshift(fft(s2,length(s2))));%加kaiser窗后信号频谱
      17:  spectrum=zeros(1,N);
      18:   
      19:  %%二次加窗算法部分
      20:  for i= 1:N
      21:      if isMax(i,spectrum1)==1
      22:          spectrum (i) = spectrum2(i);
      23:      else
      24:          spctrum (i) = spectrum1(i);
      25:      end
      26:   
      27:  end 
      28:  f_coordinate=linspace(-fs/2,fs/2,N);%频率坐标
      29:   
      30:  figure;
      31:  subplot(211);
      32:  plot(f_coordinate, (spectrum_origin) );
      33:  title(' 频谱');
      34:  xlabel('频率');ylabel('幅度');
      35:  subplot(212);
      36:  plot(f_coordinate, (spectrum) );
      37:  title(' 频谱');
      38:  xlabel('频率');ylabel('幅度');
      39:   
      40:  %%%%%%%%%%%%%%%%%%%%%IIR filter%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      41:  Fs = 22050;  % Sampling Frequency
      42:   
      43:  Fpass = 5000;        % Passband Frequency
      44:  Fstop = 6000;        % Stopband Frequency
      45:  Apass = 1;           % Passband Ripple (dB)
      46:  Astop = 80;          % Stopband Attenuation (dB)
      47:  match = 'stopband';  % Band to match exactly
      48:   
      49:  % Construct an FDESIGN object and call its BUTTER method.
      50:  h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
      51:  Hd = design(h, 'butter', 'MatchExactly', match);
      52:   
      53:   
      54:  y=filter(Hd,x);
      55:   
      56:  N=length(y);
      57:   
      58:  mywin1=window(@kaiser,N);%kaiser窗
      59:  mywin2=window(@hamming,N);%hamming窗
      60:  s1=y.*mywin1;%信号加kaiser窗
      61:  s2=y.*mywin2;%信号加hamming窗
      62:  spectrum_origin=abs(fftshift(fft(y,length(y))));%加hamming窗后信号频谱
      63:  spectrum1=abs(fftshift(fft(s1,length(s1))));%加hamming窗后信号频谱
      64:   
      65:  spectrum2=abs(fftshift(fft(s2,length(s2))));%加kaiser窗后信号频谱
      66:  spectrum=zeros(1,N);
      67:   
      68:  %%二次加窗算法部分
      69:  for i= 1:N
      70:      if isMax(i,spectrum1)==1
      71:          spectrum (i) = spectrum2(i);
      72:      else
      73:          spctrum (i) = spectrum1(i);
      74:      end
      75:   
      76:  end 
      77:  f_coordinate=linspace(-fs/2,fs/2,N);%频率坐标
      78:   
      79:  figure;
      80:  subplot(211);
      81:  plot(f_coordinate, (spectrum_origin) );
      82:  title(' 频谱');
      83:  xlabel('频率');ylabel('幅度');
      84:  subplot(212);
      85:  plot(f_coordinate, (spectrum) );
      86:  title(' 频谱');
      87:  xlabel('频率');ylabel('幅度');
      88:   
    OPTIMISM, PASSION & HARDWORK
  • 相关阅读:
    找了半天的问题
    一个图片加载与绘制类(使用GDI输出图片)
    GetBitmapBits和GetDIBits的区别(Windows GDI)
    VBScripts and UAC elevation
    win32程序中简单应用mfc
    gc buffer busy等待事件
    global cache cr request等待事件
    利用Cluster Verify Utility工具体验RAC最佳实践
    食物日记:上海铁板烧
    gc cr request等待事件
  • 原文地址:https://www.cnblogs.com/hiramlee0534/p/3602256.html
Copyright © 2011-2022 走看看