八度信号处理:如何衰减除一个频率以外的所有频率?

时间:2016-10-26 16:00:18

标签: matlab signal-processing fft octave

我在Octave中实现了一个莫尔斯码解码器。它已经可以工作了,但不是很嘈杂的信号,如下所示:

Screenshot from audacity

我有以下想法来减少噪音:

  1. 执行fft以找到" beep"莫尔斯音调的频率
  2. 使用带通滤波器衰减所有其他频率。
  3. 不幸的是,我显然无法执行第2步。过滤后,我的信号看起来像这样:

    audacity Screenshot

    这显示了信号的前两毫秒。

    我的代码如下所示。请告诉我:

    • 我的基本想法是否有希望

    • 如何以实际执行我想要的方式改进我的代码

      [x, f_sampling]  = wavread(filename);
      t = fft(x);
      l = length(t);
      magnitudes = (abs(t/l))(1:l/2+1);
      f = f_sampling*(0:(l/2))/l;
      [peaks, locations] = findpeaks(magnitudes);
      [maximum,index] = max(peaks);
      f_main = f(locations(index)) 
      
      f_cutoff = [0.1 0.9]*2*f_main/(f_sampling)
      [b, a] = cheby1(20, 1, f_cutoff);
       y = x / max(x);
      
      y = filter(b, a, x); 
      

0 个答案:

没有答案