我有一个高振幅白高斯噪声的信号/矢量,我正试图得到一个二进制信号(0或1)。采样频率为10Hz。
我在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)
如您所见,我为循环做了一个,假设任何小于0.5的信号等于0且大于等于1.
有人可以验证此方法是否适用于获取二进制信号?
感谢。
答案 0 :(得分:3)
这种方法当然有效(虽然没有看到信号,但很难判断它是否是最好的方法)。但是,有一种更简单的阈值处理方式 - 您可以简单地编写
而不是循环code = x > 0.5;
答案 1 :(得分:0)
我建议再实施一步,使其成为一种更强大的阈值处理方式:
通过这种方式,当信号由于噪声而在单个阈值(0.5)附近跳跃时,您不会冒险从0到1跳转到0。