資源簡介
matlab模擬幅度調制源代碼 通信工程MATLAB課程的教學實例

代碼片段和文件信息
%?MATLAB?script?for?Illustrative?Problem?3.3.
%...........參數設置..............
echo?off
close?allclear
fs=200;?????????????????%采樣頻率,由采樣定理決定
ts=1/fs;????????????????%采樣間隔ts由fs決定
fc=50;??????????????????%載波頻率
snr=20;?????????????????%dB表示的信噪比
snr_lin=10^(snr/10);????%線性信噪比的值
t0=0.5;
t=[0:ts:t0];????????????%時間向量的表達,時間范圍[0t0]
df0=0.2;????????????????%頻率分辨率的下限為0.2
%...........消息信號m(t)的時域描述...........
m=zeros(1length(t));???%消息信號m(t)賦初值
for?i=1:length(t)?
????if?t(i)<=t0/5
????????m(i)=2;
????elseif?t(i)<=3*t0/5
????????m(i)=-1;
????else
????????m(i)=0;
????end
end
%...........?第一部分:調制?...........
%正弦載波信號c(t)的時域表達
c=cos(2*pi*fc*t);
%DSB已調信號u(t)的時域表達
A0=1;
u=(A0+m).*c;
%求出消息信號和已調信號的傅立葉變換
N1=length(m);
N2=fs/df0;
N=2^(nextpow2(max(N1?N2)));????%求fft的點數N
df=fs/N;????????????????????????%最終的頻率分辨率
f=linspace(-fs/2fs/2-dfN);????%頻域軸的向量,0頻點在中間?
M=fftshift(fft(mN)/fs);????????%求消息信號的傅立葉變換
U=fftshift(fft(uN)/fs);????????%求已調信號的傅立葉變換
%畫出消息信號和已調信號的時域圖和幅度譜
figure
subplot(221)
plot(tm)
xlabel(‘t/s‘)
ylabel(‘m(t)‘)
axis([00.5-1.12.1])
subplot(223)
plot(tu)
xlabel(‘t/s‘)
ylabel(‘u(t)‘)
subplot(222)
plot(fabs(M))
xlabel(‘f/Hz‘)
ylabel(‘M(f)‘)
subplot(224)
plot(fabs(U))
xlabel(‘f/Hz‘)
ylabel(‘U(f)‘)
%...........?第一部分:調制結束?...........
%...........?第二部分:?加噪聲?...........
signal_power=(sum(u.^2))/length(u);?%計算(已調)信號的功率
noise_power=signal_power/snr_lin;???%計算噪聲的功率,均值為0,所以對應噪聲的方差
noise_std=sqrt(noise_power);????????%計算噪聲的標準差
noise=noise_std*randn(1length(u));?%得到噪聲向量
r=u+noise;??????????????????????????%接收端的接收信號,加入了噪聲
%畫出接收信號的時域圖和幅度譜
figure
subplot(211)
plot(tr)
xlabel(‘t/s‘)
ylabel(‘r(t)‘)
axis([00.5-66])
subplot(212)
R=fftshift(fft(rN)/fs);????????%求消息信號的傅立葉變換
plot(fabs(R))
xlabel(‘f/Hz‘)
ylabel(‘R(f)‘)
%...........?第二部分:?加噪聲結束...........
%...........?第三部分:?包絡解調?...........
y=abs(hilbert(r));??????????????%利用hilbert函數求包絡既sqrt(r^2+r^(t)^2)
y=y-A0;?????????????????????????%減去在發送端加入的直流部分
Y=fftshift(fft(yN)/fs);????????%求y(t)的傅立葉變換
%畫出最后解調信號的時域圖和幅度譜
figure
subplot(211)
plot(ty)
xlabel(‘t/s‘)
ylabel(‘y(t)‘)
subplot(212)
plot(fabs(Y))
xlabel(‘f/Hz‘)
ylabel(‘Y(f)‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2633??2010-06-14?11:00??模擬幅度調制\am.m
?????文件???????2841??2010-06-14?10:38??模擬幅度調制\dsb.m
?????文件????????433??2010-06-14?10:02??模擬幅度調制\power_example.m
?????文件???????2896??2010-06-14?10:50??模擬幅度調制\ssb.m
?????目錄??????????0??2010-06-16?19:49??模擬幅度調制
-----------?---------??----------?-----??----
?????????????????8803????????????????????5
- 上一篇:MATLAB機器人工具箱使用說明
- 下一篇:數字信號處理MATLAB版
評論
共有 條評論