通信原理软件实验报告.docx
《通信原理软件实验报告.docx》由会员分享,可在线阅读,更多相关《通信原理软件实验报告.docx(38页珍藏版)》请在冰豆网上搜索。
![通信原理软件实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/6/efc7aed1-9bc1-4954-a61a-929c782c0e5a/efc7aed1-9bc1-4954-a61a-929c782c0e5a1.gif)
通信原理软件实验报告
信息与通信工程学院
通信原理软件实验报告
班级:
2008211113
姓名:
学号:
序号:
日期:
2010年11月
实验一调幅信号波形频谱仿真
一、实验题目
假设基带信号为
,载波频率为
,请仿真出AM、DSB-SC、SSB信号,观察已调信号的波形及频谱。
二、基本原理
1、AM调制原理
对于单音频信号
进行AM调制的结果为
其中调幅系数
,要求
以免过调引起包络失真。
由
和
分别表示AM信号波形包络最大值和最小值,则AM信号的调幅系数为
2、DSB-SC调制原理
DSB信号的时域表达式为
频域表达式为
3、SSB调制原理
SSB信号只发送单边带,比DSB节省一半带宽,其表达式为:
三、仿真思路
定义时域采样率、截断时间和采样点数,可得到载波和调制信号,容易根据调制原理写出各调制信号表达式,由此可以画出时域波形图。
另外,对时域信号进行FFT变换,此处使用预先定义的t2f.m函数替代,进行傅立叶变换,得到频谱,在频域作图即可。
四、程序框图
五、仿真源代码
%Assumebasebandsignal:
m(t)=sin(2000*pi*t)+2*cos(1000*pi*t)
%carrierfrequencyisfc=20kHz,thatiscos(2*pi*fc*t)
%prepareworkspace
Clearall
closeall
%-------------------------------------------------------------------
%Commondefinitions
fs=800;%samplingfrequency
T=200;%Time-domaintruncation
N=T*fs;%samplepoints
dt=1/fs;%timeresolution
t=-T/2:
dt:
T/2-dt;
df=1/T;%minimumfrequency-domainresolution
f=-fs/2:
df:
fs/2-df;
%-------------------------------------------------------------------
fm1=1;%kHz
fm2=0.5;%kHz
mt=sin(2*pi*fm1*t)+2*cos(2*pi*fm2*t);
mt1=mt/3;%normalization
fc=20;%kHz
ct=cos(2*pi*fc*t);
Ac=1;
%-------------------------------------------------------------------
%%SimulateAM
a=0.8;
st1=Ac*(1+a*mt1).*ct;%AMEquation
Sf1=t2f(st1,fs);%FourierTransform
surf1=abs(hilbert(st1));%envelope
figure
(1)
%plotModulatingSignal
subplot(2,2,1),plot(t,mt),gridon,axis([0,+4,-3,+3]),
title('ModulatingSignal'),xlabel('t'),ylabel('m(t)')
%plotCarrierSignal
subplot(2,2,2),plot(t,ct),gridon,axis([0,2/fc,-1,1]),
title('CarrierSignal'),xlabel('t'),ylabel('c(t)')
%plotModulatedSignalanditsenvelope
subplot(2,2,3),plot(t,st1,t,surf1,'r:
'),gridon,
axis([0,60/fc,-2*Ac,+2*Ac]),
title('ModulatedSignal'),xlabel('t'),ylabel('s(t)')
%plotFrequencySpectrum
subplot(2,2,4),plot(f,abs(Sf1)),
axis([-30,+30,0,max(abs(Sf1))]),gridon,
title('FrequencySpectrum'),xlabel('f'),ylabel('S(f)')
%-------------------------------------------------------------------
%%SimulateDSB-SC
st2=Ac*mt.*ct;
Sf2=t2f(st2,fs);%FourierTransform
surf2=abs(hilbert(st2));%envelope
figure
(2)
%plotModulatingSignal
subplot(2,2,1),plot(t,mt),gridon,axis([0,+4,-3,+3]),
title('ModulatingSignal'),xlabel('t'),ylabel('m(t)')
%plotCarrierSignal
subplot(2,2,2),plot(t,ct),gridon,axis([0,2/fc,-1,1]),
title('CarrierSignal'),xlabel('t'),ylabel('c(t)')
%plotModulatedSignal
subplot(2,2,3),plot(t,st2),gridon,axis([0,60/fc,-3*Ac,+3*Ac]),
title('ModulatedSignal'),xlabel('t'),ylabel('s(t)')
%plotFrequencySpectrum
subplot(2,2,4),plot(f,abs(Sf2)),axis([-30,+30,0,max(abs(Sf2))]),
gridon,title('FrequencySpectrum'),xlabel('f'),ylabel('S(f)')
%-------------------------------------------------------------------
%%SimulateSSB
%uset2fandf2tfunctiontodohilberttransform
%ormayusemh=hilbert(mt);
Mt=t2f(mt,fs);
Mh=-1j*sign(f);
mh=real(f2t(Mh,fs));
%GernerateSSBSignal(rightside)
st3=mt.*cos(2*pi*fc*t)-mh.*sin(2*pi*fc*t);
Sf3=t2f(st3,fs);
figure(3)
%plotModulatingSignal
subplot(2,2,1),plot(t,mt),gridon,axis([0,+4,-3,+3]),
title('ModulatingSignal'),xlabel('t'),ylabel('m(t)')
%plotCarrierSignal
subplot(2,2,2),plot(t,ct),gridon,axis([0,2/fc,-1,1]),
title('CarrierSignal'),xlabel('t'),ylabel('c(t)')
%plotModulatedSignal
subplot(2,2,3),plot(t,st3),gridon,axis([0,60/fc,-6*Ac,+6*Ac]),
title('ModulatedSignal'),xlabel('t'),ylabel('s(t)')
%plotFrequencySpectrum
subplot(2,2,4),plot(f,abs(Sf3)),
axis([-30,+30,0,max(abs(Sf3))]),gridon,
title('FrequencySpectrum'),xlabel('f'),ylabel('S(f)')
%-------------------------------------------------------------------
%Endofprogram
附注t2f.m函数代码,此函数在后续实验中也有使用:
%傅里叶正变换
functionS=t2f(s,fs)%s代表输入信号,S代表s的频谱,fs是采样频率
N=length(s);%样点总数
T=1/fs*N;%观察时间
f=[-N/2:
(N/2-1)]/T;%频率采样点
tmp1=fft(s)/fs;
tmp2=N*ifft(s)/fs;
S(1:
N/2)=tmp2(N/2+1:
-1:
2);
S(N/2+1:
N)=tmp1(1:
N/2);
S=S.*exp(j*pi*f*T);
end
六、实验结果及分析
图1.1仿真AM波形和频谱
图1.1为AM调制的波形和频谱图,从仿真的结果看出,AM调制系数定义为
时信号包络清晰,包络已显式绘出,可利用包络检波恢复原信号,接收设备较为简单。
其频谱含有离散大载波,从理论分析可知,此载波占用了较多发送功率,使得发送设备功耗较大。
图1.2仿真DSB-SC波形和频谱
图1.2为双边带抑制载波调幅信号波形和频谱,其时域波形有相位翻转,频谱不含离散大载波。
必须使用相干解调,可用多种方法提取载波,常用方式为在发端加入离散导频分量,在收端利用调谐于载频
的窄带滤波器滤出导频分量。
图1.3仿真SSB波形和频谱
图1.3为SSB信号波形和频谱仿真图。
SSB信号比DSB信号节省一半带宽,适合于语声信号的调制,因为其没有直流分量,也没有很低频的成分。
解调时可采用相干解调或者在发端加入离散大载波进行包络检波。
实验二调频信号波形频谱仿真
一、实验题目
假设基带信号
,载波频率为40kHz,仿真产生FM信号,观察波形与频谱,并与卡松公式做对照。
FM的频率偏移常数为5kHz/V。
二、基本原理
单音频信号
经FM调制后的表达式为
其中
调制指数
。
由卡松公式可知FM信号的带宽为
三、仿真思路
同实验一中相仿,定义必要的仿真参数,在此基础上可得到载波信号和调制信号。
根据
可得到频偏,由此可写出最终的FM信号的表达式进行仿真计算。
对FM信号进行傅里叶变换可得频谱特性,变换依旧使用实验一中给出的t2f.m函数。
四、程序框图
五、仿真源代码
%Assumebasebandsignal:
%m(t)=sin(2000*pi*t)+2*cos(1000*pi*t)+4*sin(500*pi*t+pi/3)
%carrierfrequencyisfc=40kHz,thatiscos(2*pi*fc*t)
%prepareworkspace
clearall
closeall
%--------------------------------------------------------------------
%%Commondefinitions
fs=800;%samplingfrequency(kHz)
T=16;%Time-domaintruncation(ms)
N=T*fs;%samplepoints
dt=1/fs;%timeresolution
t=-T/2:
dt:
T/2-dt;
df=1/T;%minimumfrequency-domainresolution
f=-fs/2:
df:
fs/2-df;
%--------------------------------------------------------------------
fm1=1;%kHz
fm2=0.5;%kHz
fm3=0.25;%kHz
fc=40;%kHz
%Basebandsignal
mt=sin(2*pi*fm1*t)+2*cos(2*pi*fm2*t)+4*sin(2*pi*fm3*t+pi/3);
%Carriersignal
ct=cos(2*pi*fc*t);
Kf=5;%kHz/V
phi=2*pi*Kf*cumsum(mt)*dt;%phasedeviation
%--------------------------------------------------------------------
%%GenerateFMsignal
st=cos(2*pi*fc*t+phi);%FMsignal
Sf=t2f(st,fs);%FourierTransform
%--------------------------------------------------------------------
%%Plotfigures
figure
(1)%plotModulatingSignal
subplot(1,2,1),plot(t,mt),gridon,axis([0,+8,-7,+7]),
title('ModulatingSignal'),xlabel('t'),ylabel('m(t)')
%plotCarrierSignal
subplot(1,2,2),plot(t,ct),gridon,axis([0,2/fc,-1,1]),
title('CarrierSignal'),xlabel('t'),ylabel('c(t)')
figure
(2)%plotModulatedSignalanditsenvelope
plot(t,st),gridon,axis([0,180/fc,-1.5,+1.5]),
title('ModulatedSignal'),xlabel('t'),ylabel('s(t)')
figure(3)%plotFrequencySpectrum
plot(f,abs(Sf)),axis([-90,+90,0,max(abs(Sf))]),gridon,
title('FrequencySpectrum'),xlabel('f'),ylabel('S(f)')
%--------------------------------------------------------------------
六、实验结果及分析
图2.1基带信号和载波信号波形
如图2.2为仿真FM信号波形,其形状为疏密波,最大频偏5kHz/V。
图2.2仿真FM信号波形
如图2.3所示为仿真FM信号频谱图,由图可以读出并计算带宽为
。
由图2.1读出
,频偏为
。
利用卡松公示进行理论计算为:
仿真与理论计算值基本相符。
验证了卡松公式的有效性。
图2.3仿真FM信号频谱
实验三单双极性归零码波形及功率谱仿真
一、实验题目
通过仿真测量占空比为25%、50%、75%以及100%的单双极性归零码波形及其功率谱。
二、基本原理
1、单极性归零码
当发
码时,发出正电流,但持续时间短于一个码元的时间宽度,即发出一个窄脉冲;当发
码时,仍然不发送电流。
单极性归零码在符号等概出现且互不相关的情况下,功率谱主瓣宽度为
,其频谱含有连续谱、直流分量、离散始终分量及其奇次谐波分量。
2、双极性归零码
其中
码发正的窄脉冲,
码发负的窄脉冲,两个码元的时间间隔可以大于每一个窄脉冲的宽度,取样时间是对准脉冲的中心。
双极性归零码在符号等概且不相关的情况下,功率谱仅含有连续谱,其主瓣宽度为
。
3、各种码的比较
不归零码(NoneReturnZeroCode)在传输中难以确定一位的结束和另一位的开始,需要用某种方法使发送器和接收器之间进行定时或同步。
归零码(NoneReturnZeroCode)的脉冲较窄,根据脉冲宽度与传输频带宽度成反比的关系,因而归零码在信道上占用的频带较宽。
单极性码会积累直流分量;双极性码的直流分量大大减少,这对数据传输是很有利的。
三、仿真思路
1、产生RZ码
采用归零矩形脉冲波形的数字信号,可以用以下方法产生信号矢量
。
设
是码元矢量,N是总取样点数,M是总码元数,L是每个码元内的点数,
是要求的占空比,
是仿真系统的时域采样间隔,则RZ信号的产生方法是
2、仿真功率谱密度
任意信号
的功率谱的定义是
其中
是
截短后的傅氏变换,
是
的能量谱,
是
在截短时间内的功率谱。
对于仿真系统,若
是时域取样值矢量,X是对应的傅氏变换,那么
的功率谱便为
。
针对随机过程
,其平均功率谱密度定义为各样本功率谱密度的数学期望
3、作出仿真图
由于需要作出的图形较多,且图形间需要对比,故采用了两种视图进行绘图,一是各个占空比的RZ码波形图和其功率谱进行横向对比,二是分别作出各占空比下的单双极性归零码波形,以便于观察。
另外,各个占空比的RZ码波形和其频谱变换后的结果使用多行的矩阵进行存储,方便最后作图,因而代码显得有些冗余。
可改用定义函数,输入参数的方式给出不同占空比下的计算与绘图。
四、程序框图
对于单极性归零码:
对于双极性归零码:
五、仿真源代码
%%Thisisexp11ofcommunicationmatlabexperiment.
%Simulatedigitalcodingwaveanditspowerspectrum
%dutyratio25%,50%,75%,100%
%bothbipolarandunipolarRZcode
%Prepareworkspace
clearall
closeall
%--------------------------------------------------------------------
%commondefinitions
ratio=[0.25,0.5,0.75,1];
L=128;%samplepointseverybitinterval
N=2^14;%totalsamplepoints
M=N/L;%totalbits
Rs=10;%kbit/s
Ts=1/Rs;%bits'timeinterval
T=M*Ts;%period
fs=N/T;%samplingrate
t=-T/2:
1/fs:
T/2-1/fs;%timedomain
df=1/T;%minimumfrequency-domainresolution
f=-fs/2:
df:
fs/2-df;%frequecydomain
%--------------------------------------------------------------------
%%generateunipolarRZcode
%prelocatespaceforspeed
ratiolen=length(ratio);
Frz_unipolar=zeros(ratiolen,length(f));
Frz_bipolar=zeros(ratiolen,length(f));
rz_unipolar=zeros(ratiolen,L*M);
rz_bipolar=zeros(ratiolen,L*M);
%looptogenerateRZcodeindifferentdutyratio
EP1=zeros(size(f))+eps;
EP2=zeros(size(f))+eps;
forii=1:
ratiolen
forloop=1:
200
%generateunipolardata
unip=(randn(1,M)>0);
%generatebipolardata
bip=sign(randn(1,M));
tmp1=zeros(L,M);%zeromatrix:
LbyM
tmp2=zeros(L,M);
Lii=L*ratio(ii);%applydutyratio
tmp1(1:
Lii,:
)=ones(Lii,1)*unip;%unipolarRZcodematrix
tmp2(1:
Lii,:
)=ones(Lii,1)*bip;%bipolarRZcodematrix
rz_tmp1=tmp1(:
)';%unipolarrzcodearray
rz_tmp2=tmp2(:
)';%bipolarrzcodearray
Frz_tmp1=t2f(rz_tmp1,fs);%FourierTransform
Frz_tmp2=t2f(rz_tmp2,fs);
%P1=abs(Frz_tmp1).^2/T;
P1=Frz_tmp1.*conj(Frz_tmp1)/T;%PowerSpectrum
P2=Frz_tmp2.*conj(Frz_tmp2)/T;
EP1=(EP1*(loop-1)+P1+eps)/loop;
EP2=(EP2*(loop-1)+P2+eps)/loop;
end
%differentdutyratiocodeindifferentrow
EP11=10*log10(EP1);
EP22=10*log10(EP2);
rz_unipolar(ii,:
)=rz_tmp1;%timedomain
Frz_unipolar(ii,:
)=EP11;%frequecydomain
rz_bipolar(ii,:
)=rz_tmp2;
Frz_bipolar(ii,:
)=EP22;
end
%--------------------------------------------------------------------
%%visualizeunipolarRZcode
picnum=1;
%%firstview
%allinonefugure,subplot4by2
figure
(1)
forjj=1:
ratiolen
%plotwaveintime-domain
subplot(ratio