我有一个高振幅高斯白噪声的信号/矢量,我试图得到一个二进制信号(0或1)。采样频率为10 The。
在MATLAB中应用了一个简单的二阶Butterworth滤波器,具体如下:
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。
有人能验证这种方法是否适用于获得二进制信号吗?
谢谢。
发布于 2013-01-04 13:08:24
这种方法当然有效(但是,如果看不到信号,就很难判断它是否是最好的方法)。然而,有一种更简单的方法来进行阈值处理--而不是循环,您可以简单地编写
code = x > 0.5;发布于 2013-11-08 11:07:54
我建议再采取一项措施,使之成为一种更加有力的脱粒方法:
这样,当信号由于噪声而在单个阈值( 0.5)附近跳跃时,就不会有几次从0跳到1到0的风险。
https://stackoverflow.com/questions/14156807
复制相似问题