資源簡介
這是關于AM調制解調系統仿真用matlab實現的代碼,加了噪聲的,寫的子函數也都在壓縮包里面。

代碼片段和文件信息
%?AM調制解調實驗
clear?all;
close?all;
%%?----------------系統仿真參數
A=3;?%直流分量
fc=250;?%載波頻率(Hz)
t0=0.15;%信號時長
snr=25;?%解調器輸入信噪比dB
dt=0.001;%?系統時域采樣間隔
fs=1/dt;%系統采樣頻率
df?=?0.2;?%所需的頻率分辨率
t=0:dt:t0;
Lt=length(t);%仿真過程中,信號長度
snr_lin?=?10^(snr/10);?%信噪比
%%?--------------------------figure(1)------------------------
%?-------------------------------畫出調制信號波形及頻譜
%?產生模擬調制信號
m=[ones(1t0/(3*dt))-2*ones(1t0/(3*dt))zeros(1t0/(3*dt)+1)];
L=2*min(m);
R=2*max(abs(m))+A;
disp(‘畫出調制信號波形及頻譜‘);
pause
clf
figure(1)
subplot(321);
plot(tm(1:length(t)));%?畫出調制信號波形
axis([0?t0?-R/2?R/2]);
xlabel(‘t‘);
ylabel(‘調制信號‘);
subplot(322);
[Mmdf1f]=T2F(mdtdffs);%求出調制信號頻譜
[Bw_eq]=signalband(Mdft0);%求出信號等效帶寬
f_start=fc-Bw_eq;
f_cutoff=fc+Bw_eq;
plot(ffftshift(abs(M)));%?畫出調制信號頻譜
xlabel(‘f‘);
ylabel(‘調制信號頻譜‘);
%?-------------------------------畫出載波信號波形及頻譜
disp(‘畫出載波及頻譜‘);
pause
subplot(323);
c=cos(2*pi*fc*t);%載波
plot(tc);
axis([0?t0?-1.2?1.2]);
xlabel(‘t‘);
ylabel(‘載波‘);
subplot(324)%?載波頻譜
[Ccdf1f]=T2F(cdtdffs);
plot(ffftshift(abs(C)))%?畫出載波頻譜
xlabel(‘f‘);
ylabel(‘載波頻譜‘);
%?-------------------------------畫出已調信號波形及頻譜
disp(‘畫出已調信號及其頻譜‘);
pause
subplot(325)%?畫已調信號
u=(A+m(1:Lt)).*c(1:Lt);%已調信號
plot(tu);%?畫出已調信號波形
axis([0?t0?-R?R]);
xlabel(‘t‘);
ylabel(‘已調信號‘);
subplot(326);
[Uudf1f]=T2F(udtdffs);
plot(ffftshift(abs(U)))%?畫出已調信號頻譜
xlabel(‘f‘);
ylabel(‘已調信號頻譜‘);
%-------------------------該圖為figure(1)--------------------------%
%%?--------------------------figure(2)------------------------
%?-----------------------------將已調信號送入信道畫出信道高斯白噪聲波形及頻譜
%先根據所給信噪比產生高斯白噪聲
signal_power?=?power_x(u(1:Lt));?%已調信號的平均功率
noise_power=(signal_power*fs)/(snr_lin*(2*?Bw_eq));%求出噪聲方差(噪聲均值為0)
noise_std?=?sqrt(noise_power);?%噪聲標準偏差
noise?=?noise_std*randn(1Lt);?%產生噪聲
disp(‘畫出信道高斯白噪聲波形及頻譜‘);%此時,噪聲已實現,為確知信號,可求其頻譜
pause
figure(2)
subplot(321);
plot(tnoise);%?畫出噪聲波形
axis([0?t0?-R?R]);
xlabel(‘t‘);
ylabel(‘噪聲信號‘);
subplot(322);
[noisefnoisedf1f]=T2F(noisedtdffs);%噪聲頻譜
plot(ffftshift(abs(noisef)))%?畫出噪聲頻譜
xlabel(‘f‘);
ylabel(‘噪聲頻譜‘);
%?-----------------------------畫出疊加了噪聲的已調信號波形及頻譜
disp(‘畫出疊加了噪聲的已調信號波形及頻譜‘);
pause
sam=u(1:Lt)+noise(1:Lt);%疊加了噪聲的已調信號
subplot(323);?%畫出疊加了噪聲的已調信號波形
plot(tsam);
axis([0?t0?-R?R]);
xlabel(‘t‘);
ylabel(‘信道中的信號‘);
subplot(324);
[samfsamdf1f]=T2F(samdtdffs);%求出疊加了噪聲的已調信號頻譜
plot(ffftshift(abs(samf)))%?畫出疊加了噪聲的已調信號頻譜
xlabel(‘f‘);
ylabel(‘信道中信號頻譜‘);
%?-----------------------------畫出帶通濾波器
disp(‘畫出帶通濾波器‘);
pause
[Hf]=bp_f(length(sam)f_startf_cutoffdf1fs1);%求帶通濾波器
subplot(326);
plot(ffftshift(abs(H)))%?畫出帶通濾波器
xlabel(‘f‘);
ylabel(‘帶通濾波器‘);
%-------------------------該圖為figure(2)-------------------------%
%%?--------------------------figure(3)------------------------
%?-----------------------------經過帶通濾波器后的信號及其頻譜
disp(‘畫出經過理想帶通濾波器后的信號及其頻譜‘);
pause
DEM?=?H.*samf;?%濾波器輸出的頻譜
[dem]=F2T(DEMfs);%濾波器的輸出波形
figure(3)
subplot(321)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-06-02?14:04??AM\
?????文件?????????314??2017-09-01?13:57??AM\F2T.m
?????文件?????????722??2018-06-02?14:00??AM\T2F.m
?????文件????????6150??2018-06-03?22:46??AM\am.m
?????文件?????????632??2017-09-01?13:58??AM\bp_f.m
?????文件?????????259??2018-06-02?14:03??AM\fftseq.m
?????文件?????????536??2017-09-01?13:58??AM\lp_f.m
?????文件??????????82??2017-09-01?13:56??AM\power_x.m
?????文件?????????233??2018-06-03?22:47??AM\signalband.m
評論
共有 條評論