AM解调中的低通滤波器

信息处理 matlab 过滤器 傅里叶变换 过滤器设计 数字通信
2022-01-31 08:49:39

我正在尝试恢复经过 AM 调制的基带信号。我在 MATLAB 中使用 filter 命令来执行低通滤波...代码如下:

Fsig=10;                    Fc=100;              Fsamp=10.*Fc;
t = 0:1/Fsamp:2*pi;

Tx = cos(2.*pi.*Fsig.*t);               % Transmitted Signal
Carrier = cos(600.*t);                  % Carrier Signal
Modulated = Tx.*Carrier;                % Modulated Signal
Demodulated = Modulated.*Carrier;       % Demodulated Signal

Rx= filter([1 1],[1 -0.8],Demodulated);

figure(6);
plot(t,Tx,'r',t,Modulated,'b',t,Demodulated,'g',t,Rx,'k','LineWidth',1.5); grid on;
legend('Trans.','Modulated','Demodulated','Baseband')

如何选择滤波器的系数来完美恢复我的基带信号?除了这个,还有其他可以在matlab中使用来恢复基带信号的技术/命令吗?

2个回答

MATLAB 具有amdemod(参见MATLAB 文档)可用于恢复抑制的载波 AM 调制信号。从文档中,解调器使用使用生成的低通滤波器[num,den] = butter(5,Fc*2/Fs)这可能是一个好的开始。

在您的仿真中,采样频率为 1000 Hz,这意味着 Nyquist 频率为 500 Hz。载波频率非常接近 95.5 Hz ( 600/(2*pi))。该消息的频率为 10 Hz。这意味着信号Demodulated在频率 10、181 和 201 Hz 处具有谐波。因此,您的低通滤波器的截止频率可以设置为高于 10 且低于 181 的任何频率。假设您希望它为 100 Hz。Matlab 有许多用于设计滤波器的命令。一个简单的方法是fir1

b = fir1(10,100/500);

是您的100/500截止频率除以奈奎斯特频率。第一个参数10是过滤器顺序。

要恢复消息,您可以Demodulated使用过滤器的脉冲响应进行卷积b

Rx = conv(Demodulated, b);

顺便说一句,我会更改信号的名称Demodulated,因为它还没有真正解调。一个更好的名字可能是rx_mixed或类似的东西。