2014-02-20 16 views
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),我想我是在上面的代碼中正確的) 任何請幫忙嗎?

回答

2

看一看你的解調信號的頻譜: enter image description here

您需要低通濾波器的信號。您可以使用以下方法:

% 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)'); 

結果是:

enter image description here

+0

文檔說amdemod解調信號。這是否意味着它已通過低通濾波器? – BaluRaman

+0

事實上,'amdemod'函數默認進行一些低通濾波。但是,它似乎不夠好... – tashuhka

+0

在您的低通濾波器中,您正在使用'Fm'。你能否設計一個沒有它的過濾器?我嘗試了下面的代碼,但它不工作 [b,a] = butter(2,Fc /(Fs/2),'low'); y =濾波器(b,a,z); 我不知道爲歸一化頻率給出了什麼值 – BaluRaman