我在Octave中实现了一个莫尔斯码解码器。它已经可以工作了,但不是很嘈杂的信号,如下所示:
我有以下想法来减少噪音:
不幸的是,我显然无法执行第2步。过滤后,我的信号看起来像这样:
这显示了信号的前两毫秒。
我的代码如下所示。请告诉我:
我的基本想法是否有希望
如何以实际执行我想要的方式改进我的代码
[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);