【问题标题】:Filtering signal with white gaussian noise in MATLAB在 MATLAB 中用高斯白噪声过滤信号
【发布时间】:2012-12-18 20:55:24
【问题描述】:

我有一个具有高振幅白高斯噪声的信号/矢量,我正在尝试获得一个二进制信号(0 或 1)。采样频率为 10Hz。

我在 MATLAB 中应用了一个简单的二阶巴特沃斯滤波器,如下所示;

   x=sig_bruit_BB1;
   [b,a]=butter(2,0.1,'low');
   y = filter(b,a,x);
   plot(x)
   subplot(3,1,2)
   plot(y)
   for i=1:1:1820
       x=y(1,i);
       if (x<0.5)
           code(1,i)=0;
       else
           code(1,i)=1;
       end
   end
   subplot(3,1,3);
   plot(code)

如您所见,我做了一个 for 循环,假设任何小于 0.5 的信号都等于 0,大于等于 1。

有人可以验证此方法是否适用于获取二进制信号吗?

谢谢。

【问题讨论】:

    标签: matlab filter noise morse-code


    【解决方案1】:

    我建议再实施一个步骤,使其成为一种更强大的阈值方法:

    • 如果信号为 0,则阈值应为 0.5 + noise_amplitude(假设为 0.6 0.7)
    • 如果信号为 1,则阈值应为 0.5 - noise_amplitude(比如 0.4 0.3)

    这样,当信号因噪声而在单个阈值(0.5)附近跳跃时,您不会冒从 0 到 1 到 0 的多次跳跃的风险。

    【讨论】:

      【解决方案2】:

      这种方法确实有效(虽然没有看到信号很难判断它是否是最好的方法)。但是,有一种更简单的阈值方法 - 您可以简单地编写而不是循环

      code = x > 0.5;
      

      【讨论】:

      • 我不能在这里发布任何图片文件 :(
      猜你喜欢
      • 2013-10-14
      • 2016-02-07
      • 2015-01-25
      • 2015-02-04
      • 2016-08-17
      • 2011-09-12
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      相关资源
      最近更新 更多