0

我正在使用以下代码来调制和解调一个简单的波形。

Fs = 44100;
T = 1;
Fc = 15000;
t=[0:1/Fs:T];
x=cos(20*pi*t);
y=ammod(x,Fc,Fs);
z=amdemod(y,Fc,Fs);
plot(z);

当 Fc 大约为 12k 时,“z”与“x”相同,但当 Fc 较高时(大约 15k,如上面的代码),“z”不合适。虽然波形看起来类似于“x”,但它就像一个调制波。我显然遗漏了一些东西(我知道 Fs > 2*(Fc+BW) 并且我想我在上面的代码中正确地遵循了它)有人可以帮忙吗?

4

1 回答 1

2

看看你解调信号的频谱: 在此处输入图像描述

您需要对信号进行低通滤波。您可以使用以下内容:

% Parameters
Fs = 44100;
T  = 1;
Fc = 15000;
Fm = 10;

% Low-pass filter design
[num,den] = butter(10,1.2*Fc/Fs); 

% Signals
t = 0:1/Fs:T;
x = cos(2*pi*Fm*t);
y = ammod(x,Fc,Fs);
z = amdemod(y,Fc,Fs);
w = amdemod(y,Fc,Fs,0,0,num,den); 

% Plot
figure('Name','AM Modulation');
subplot(4,1,1); plot(t,x); title('Modulating signal');
subplot(4,1,2); plot(t,y); title('Modulated signal');
subplot(4,1,3); plot(t,z); title('Demodulated signal');
subplot(4,1,4); plot(t,w); title('Demodulated signal (filtered)');

结果是:

在此处输入图像描述

于 2014-02-20T09:12:23.440 回答