首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用MATLAB对高斯白噪声信号进行滤波

利用MATLAB对高斯白噪声信号进行滤波
EN

Stack Overflow用户
提问于 2013-01-04 12:00:36
回答 2查看 4.6K关注 0票数 4

我有一个高振幅高斯白噪声的信号/矢量,我试图得到一个二进制信号(0或1)。采样频率为10 The。

在MATLAB中应用了一个简单的二阶Butterworth滤波器,具体如下:

代码语言:javascript
复制
   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。

有人能验证这种方法是否适用于获得二进制信号吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-01-04 13:08:24

这种方法当然有效(但是,如果看不到信号,就很难判断它是否是最好的方法)。然而,有一种更简单的方法来进行阈值处理--而不是循环,您可以简单地编写

代码语言:javascript
复制
code = x > 0.5;
票数 3
EN

Stack Overflow用户

发布于 2013-11-08 11:07:54

我建议再采取一项措施,使之成为一种更加有力的脱粒方法:

  • 如果信号为0,则阈值应为0.5 + noise_amplitude (假设为0.60.7)。
  • 如果信号为1时,则阈值应为0.5 - noise_amplitude (假设为0.40.3)

这样,当信号由于噪声而在单个阈值( 0.5)附近跳跃时,就不会有几次从0跳到1到0的风险。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14156807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档