《通信原理》MATLAB仿真实验 实验一 模拟调制的仿真实验
一、
实验目的
熟悉MATLAB软件的使用,并学会用MATLAB来产生信号并实现信号模拟调制的可视化。 二、
实验原理
1、 理论原理
AM调制就是由调制信号去控制高频载波的幅度,使之随调制信号作线性变化的过程。在波形上,幅度已调信号的幅度随基带信号的规律而呈正比地变化;在频谱结构上,它的频谱完全是基带信号频谱在频域内的简单搬移(精确到常数因子)。由于这种搬移是线性的,因此,幅度调制通常又称为线性调制。
解调方法利用相干解调。解调就是实现频谱搬移,通过相乘器与载波相乘来实现。相干解调时,接收端必须提供一个与接受的已调载波严格同步的本地载波,它与接受的已调信号相乘后,经低通滤波器取出低频分量,得到原始的基带调制信号。
通过信号的功率谱密度的公式,得到功率谱密度。即: s(t)[Af(t)]costAM0c
1 sAM()A0[(c)(c)][F(c)F(c)]2
在AM信号中,载波分量并不携带信息,信息完全由边带传送。如果将载波抑制,只需在将直流A0去掉,即可输出抑制载波双边带信号,简称双边带信号(DSB)。 DSB调制器模型如图1所示。
图1 DSB调制器模型
其中,设正弦载波为
c(t)Acos(ct0)
式中,A为载波幅度;c为载波角频率;0为初始相位(假定0为0)。
调制过程是一个频谱搬移的过程,它是将低频信号的频谱搬移到载频位置。而解调是将位于载频的信号频谱再搬回来,并且不失真地恢复出原始基带信号。
双边带解调通常采用相干解调的方式,它使用一个同步解调器,即由相乘器和低通滤波器组成。在解调过程中,输入信号和噪声可以分别单独解调。相干解调的原理框图如图2所示:
图2 相干解调器的数学模型
信号传输信道为高斯白噪声信道,其功率为2。即 s(t)f(t)cost
1sDSB()[F(c)F(c)]2
DSBC
三、 实验内容
1、 用Matlab产生一个频率为2Hz、功率为10的余弦信源,设载波频率为10Hz,试画出(1)DSB调制信号;(2)该调制信号的功率谱密度;(3)相干解调后的信号波形。图形显示。
2、 用Matlab产生一个频率为2Hz、功率为10的余弦信源,设载波频率为10Hz,A=5,试画出(1)AM调制信号;(2)该调制信号的功率谱密度;(3)相干解调后的信号波形。图形显示。 四、 实验结果 AM调制:
DSB调制:
五、实验总结
通过本次实验,我理解了AM和DSB调制的原理,及用MATLAB仿真的方法。
实验二 基带信号眼图的仿真实验
一、
实验目的
熟悉MATLAB软件的使用,并学会用MATLAB来产生信号并实现基带信号眼图的可视化。 二、
实验原理
1、 理论原理 2、 重要函数说明
三、 实验内容(第2、3题选一题) 1、 画出单极性码型或双极性码的眼图。
2、 设基带传输系统响应是=0.5的升余弦滚降系统,画出在接收端的基带数字信号波形及其眼图。
0tTs13、 设二进制数字基带信号an1,1,gt,设加性高斯白
其它0噪声的双边功率谱密度为N02,画出眼图。
1(1) 经过理想低通Hf01(2) 经过理想低通Hf0四、
实验结果
f52Ts其它f1Ts其它后的眼图 后的眼图
实验三 数字频带信号调制的仿真实验
一.实验目的
熟悉MATLAB软件的使用,并学会用MATLAB来产生信号并实现二进制数字调制的可视化。
二.实验原理 1、二进制振幅键控 (1)2ASK调制原理
二进制振幅键控记作2ASK,2ASK是利用代表数字信息(“0”或“1”)的基带矩形脉冲去键控一个连续的正弦型载波的振幅,使载波时断时续地输出。有载波输出时表示发送“1”,无载波输出时表示发送“0”。 数字基带信号
式中g(t)是宽度为Ts、高度为A的矩形脉冲,an为数字序列{an}的第n个码元的电平值。
载波 c(t)=COS(ωct+ 0 ), 初始相位0 =0 则2ASK 信号的表达式为:
(2)2ASK信号波形如下:
(3)2ASK功率谱密度如下:
2、二进制数字频移键控 (1)2FSK调制
二进制频移键控记作2FSK,2FSK系统是利用二进制数字基带信号控制载波频率进行频谱变换的过程。
二进制基带信号只有两种代码,所以调频时,载波频率只能被置于两种频率,即:
即用频率为f1的载波代表“1”码,用频率为f2的载波代表“0”码,或相反。 (2)2FSK调制框图以及波形
(3)2FSK功率谱
3、二进制数字相移键控
(1)2PSK调制原理
二进制相移键控记作2PSK,用载波的两种相位(0和π)去对应基带信号的“0” 与 “1”两种码元。因此二元数字调相就是让载波在两种相位间切换,故称相移键控。
2PSK还可以看作双极性不归零码基带信号的数字调幅,即基带信号
与载波 cosωc t 的乘积。
(2)2PSK信号频谱
三.实验内容
1、 用Matlab产生等概率的二进制信源。 (1) 画出OOK信号波形及其功率谱 (2) 画出2PSK信号波形及其功率谱
(3) 画出2FSK信号波形及其功率谱(f1f21) Ts四.实验源代码、仿真结果及分析
1、产生单极性不归零的二进制基带信号,最大幅度归一化为1。画出基带信号信号波形及其功率谱图形;
(1)源代码
k=10 %k表示产生的随机数的个数
m=rand(1,k); %产生k个在(0,1)之间的均匀分布的随机数 for i=1:k
if (m(i)>0) && (m(i)< 0.5) s(i)=0; else s(i)=1; end
end %根据产生的均匀随机数产生二进制单极性不归零信号
subplot(2,1,1);
stairs(s) %画出二进制单极性归零信号 title('二进制单极性信号'); grid on
axis([1,k+1,0,2]); subplot(2,1,2); Y = fft(s,1024); Z=fftshift(Y);
Pyy = Z.* conj(Z) /(1024); f = 1000*(0:1000)/(1024); plot(f,Pyy(1:1001)); axis([0 1000,0 0.05]);
title('二进制单极性信号的频谱'); xlabel('频率f (Hz)'); grid on
(2)基带信号信号波形及其功率谱图形
2、对1产生的基带信号进行2ASK调制,画出2ASK信号波形及其功率谱图形; fb =1 %输入的二进制基带信号的频率 fc = 3 %载波频率 A=1 %载波幅度
M=25; %每比特符号用M个点来表示
tb=1/fb %输入的二进制基带信号的码元周期 tc=1/fc %载波周期
Nc=floor(M*tc/tb) %每个载波周期内的采样点的个数 step=tb/M %采样间隔
%fstart = start frequency for spectrum plot. %fend = end frequency for spectrum plot. for i = 1:k
if s(i) == 1 for j = 1:M
Ask((i-1)*M+j)=A*cos(2*pi*(j-1)/Nc); end else
for j = 1:M
Ask((i-1)*M+j)=0; end end end Ask
for i=1:M*k t(i)=i*step; end
subplot(2,2,3); plot(t,Ask)
title('2ASK信号波形'); grid on
subplot(2,2,4); Y1 = fft(Ask,1024); Z1=fftshift(Y1);
Pyy1 = Z1.* conj(Z1) /(1024); f = 1000*(0:1000)/(1024); plot(f,Pyy1(1:1001)); axis([0 1000,0 1]);
title('2Ask信号的频谱'); xlabel('频率f (Hz)'); grid on
(2)2ASK信号波形及其功率谱图形
3、对1产生的基带信号进行2FSK调制,画出2FSK信号波形及其功率谱图形; (1)源代码
fb =1 %输入的二进制基带信号的频率
fc0 = 3,fc1=5 %两个载波频率,实验中基带信号的0对应于载波频率fc0,
基带信号的1对应于载波频率fc1
A=1 %载波幅度
M=25; %每比特符号用M个点来表示
tb=1/fb %输入的二进制基带信号的码元周期 tc0=1/fc0, tc1=1/fc1, %两个载波周期
Nc0=floor(M*tc0/tb),Nc1=floor(M*tc1/tb), %每个载波周期内的采样点的个
数
step=tb/M %采样间隔
%fstart = start frequency for spectrum plot. %fend = end frequency for spectrum plot. for i = 1:k
if s(i) == 1 for j = 1:M
Fsk((i-1)*M+j)=A*cos(2*pi*(j-1)/Nc0); end else
for j = 1:M
Fsk((i-1)*M+j)=A*cos(2*pi*(j-1)/Nc1); end end
end % 2FSK调制 for i=1:M*k t(i)=i*step; end
subplot(2,2,3); plot(t,Fsk)
title('2FSK信号波形'); %画出2FSK的波形 grid on
subplot(2,2,4); Y1 = fft(Fsk,1024); Z1=fftshift(Y1);
Pyy1 = Z1.* conj(Z1) /(1024); f = 1000*(0:1000)/(1024); plot(f,Pyy1(1:1001)); axis([0 1000,0 5]);
title('2Fsk信号的频谱');
xlabel('频率f (Hz)'); %画出2Fsk信号的频谱 grid on (2)仿真结果
4、对1产生的基带信号进行2PSK调制,画出2PSK信号波形及其功率谱图形。 (1)源代码
fb =1 %输入的二进制基带信号的频率 fc =1 %载波频率 A=1 %载波幅度
M=25; %每比特符号用M个点来表示
tb=1/fb %输入的二进制基带信号的码元周期 tc=1/fc %载波周期
Nc=floor(M*tc/tb) %每个载波周期内的采样点的个数 step=tb/M %采样间隔 for i = 1:k
if s(i) == 1 for j = 1:M
Psk((i-1)*M+j)=A*cos(2*pi*(j-1)/Nc); end else
for j = 1:M
Psk((i-1)*M+j)=-A*cos(2*pi*(j-1)/Nc); end end end Psk
for i=1:M*k
t(i)=i*step; end
subplot(2,2,3); plot(t,Psk)
title('2PSK信号波形'); grid on
subplot(2,2,4); Y1 = fft(Psk,1024); Z1=fftshift(Y1);
Pyy1 = Z1.* conj(Z1) /(1024); f = 1000*(0:1000)/(1024); plot(f,Pyy1(1:1001)); axis([0 1000,0 5]);
title('2Psk信号的频谱'); xlabel('频率f (Hz)'); grid on
(2)仿真结果
五.实验心得:
1、通过这次实验,对matlab的使用有了一个更加熟练的掌握和了解,熟练掌握了画频谱的的方法,以及怎么用matlab来进行数字调制信号的仿真,我觉得,2ASK、2PSK,2FSK在matlab上实现仿真的方法是相近的,只要学会了一种,其他的就比较简单,但是必须要深刻理解含义,这对于以后的学习都是一个很大的帮助,收益很多。
2、通过在matlab上的仿真和使用,对二进制基本数字调制的方法和原理理解得也更加深刻,通过直接观察波形更加直观,并且通过画出各调制信号的频谱图与基带信号的频谱图进行比较,能够非常清楚的看到频谱之间的异同,如除了没有冲
激项之外,2PSK信号的频谱与2ASK信号的频谱完全一致,而2FSK信号在|f2-f1|>fs时,会出现双峰,这也是2FSK频谱的特别之处,通过这样的比较有利于加深记忆。