通信原理编程实验完整代码.docx
通信原理编程实验完整代码告各位学弟学妹书:此实验对于大多数人来说甚是烦人,但是我还是要劝你:尽力去学吧,学的时候觉得没什么用,那是因为不了解其博大精深,如果你一不小心顶住压力认真学了(譬如me),日后涉及相关领域时,你就能够触类旁通,瞬间迸发出灵感,撞击出智慧的火花,这种感觉就好像搂着一群漂亮的姑娘行走在春风中一样,原来那些朦胧的理论都变成了清晰的线条,串在一起:你会有一种类似于愚公般的给子子孙孙签订卖身契投身于学术的激进想法,不过这种极左的思想毕竟要不得一一除非你想女朋友和你分手,于激励学习便是极好的。实验一:基带信号m(t)=sin(2000*pi*t)+2cos(1000*pi*t),fc=20khz,<AMzDSB-SC,SSBclearallexect2f.sci;execf2t.sci;fs=800;采样速率T=200;截短时间N=T*fs;采样点数dt=Vfs;时域采样间隔时域采样点df=lT;频域采样间隔f=Ms/2:df:fs/2-df;频域采样点数fml=l;待观测正弦波频率,单位KHz,下同fm2=05;待观测余弦波频率fc=20;载波频率以上为初始化参数设置ml=sin(2*%pi)*fml*t);待观测正弦波部分Ml=t2f(ml,fs);傅里叶变换MHl=-%i*sign.*M1;希尔伯特变换mhl=real(f2t(MHl,fs);希尔伯特反变换m2=2*cos(2*%pi)*fm2*t);待观测余弦波部分M2=t2f(m2,fs);傅里叶变换MH2=-%i*sign(f).*M2;希尔伯特变换mh2=real(f2t(MH2,fs);希尔伯特反变换sl=(l+(ml+m2)abs(max(ml+m2).*cos(2*%pi)*fc*t);/AM信号时域表达式Sl=t2f(sl,fs);/AM信号频域表达式s2=(ml+m2).*cos(2*%pi)*fc*t);/DSB-SC信号时域表达式S2=t2f(s2zfs);/DSB-SC信号频域表达式s3=(ml+m2).*cos(2*%pi)*fc*t)-(mhl+mh2).*sin(2*%pi)*fc*t);SSB信号时域表达式,以上边带为例S3=t2f(s3,fs);/SSB信号上边带频域表达式以上是仿真计算部分以下为绘图部分/AM信号xset(,window,l)plot(f,abs(Sl)title('AM信号频谱')XlabeI(T)ylabel(,S(f),)mtlb_axis(-25,25z0,max(abs(Sl);xset(,window,2)plot(tzsl)title('AM信号波形,)xlabel(,t,)ylabel('s(t)')mtlb_axis(-3,3,-3,3);DSB-SC信号xset(,window,z3)plot(f,abs(S2)title('DSBSC信号频谱')XlabeI(T)ylabel(,S(f),)mtlb_axis(-25,25z0,max(abs(S2);xset(,window,z4)plot(t,s2)title(,DSB-SC信号波形')xlabel(,t,)ylabel('s(t)')mtlb_axis(-l,4,-3,3);SSB信号(以上边带为例)xset(,window,5)plot(f,abs(S3)title(5SB信号频谱')XlabeI(T)ylabel(,S(f),)mtlb-axis(-25,25,0,max(abs(S3)xset(,window',6)plot(t,s3)title(,SSB信号波形,)xlabel('t,)ylabel('s(t)')mtlb_axis(0,6,-3,3)实验二:/m(t)=sin(2000*pi*t)+2cos(1000*pi*t)+4sin(500*pi*t+pi),fc=40KHz,Kf=5kHzV,仿真产生FM,观察频谱和波形初始化参数设置clearall;exect2f.sci;execf2t.sci;Xdel(WinSid();关闭所有图形窗口fs=4000;采样速率T=16;截短时间N=T*fs;采样点数dt=Vfs;时域采样间隔t,T:dt:T£dt;时域采样点df=lT;频域采样间隔f,-fs/2:df:fs/2-df;频域采样点数fml=l;fm2=0.5;fm3=0.25;fc=40;Kf=5;频偏常数仿真计算ml=sin(2*%pi)*fml*t);phil=(2*%pi)*Kf*cumsum(ml)*dt;/cumsum函数为求累积和,相当于积分m2=2*cos(2*%pi)*fm2*t);phi2=(2*%pi)*Kf*cumsum(m2)*dt;m3=4*sin(2*%pi)*fm3*t+%pi3);phi3=(2*%pi)*Kf*cumsum(r3)*dt;s=cos(2*%pi)*fc*t+phil+phi2+phi3);/FM信号时域表达式S=t2f(szfs);/FM信号频域表达式m=sin(2*%pi*fml*t)+2*cos(2*%pi*fm2*t)+4*sin(2*%pi*fm3*t+%pi3);调制信号表达式M=t2f(m,fs);绘图/FM己调信号xset(,window,l)plot(f,abs(三)title('FM信号频谱')XlabeI(T)ylabel('S(f)')mtlb_axis(-80,80z0,max(abs(三);xset(,window,2)Pot(t,s)title(,FM信号波形,)xlabel(,t,)ylabel(,s(t)()mtlb-axis(0z3-2,2);调制信号xset(,window',3)plot(f,abs(M)title(m(t)信号频谱)XlabeI(T)ylabel(,S(f),)mtlb-axis(-5,5,0,max(abs(M);×set(,window,4)plot(tzm)title(,m信号波形,)xlabel(,t,)ylabel(,m(t),)mtlb-axis(-8,8z-6,8);实验三:通过仿真测量占空比为50%、75%以及100%的单双极性归零码波形及其功率谱,分析不同占空比对仿真结果的影响clearall;Xdel(WinSid();关闭所有图形窗口exect2f.sci;execf2t.sci;1.=32;每个码元间隔内的采样点数N=213;总采样点数M=NL;总码元数Rb=2;码元速率Ts=VRb;比特间隔fs=LTs;采样速率T=Nfs;截短时间Bs=fs2;系统带宽t=-T/2+0:N-l/fs;时域采样点f=-Bs+O:N-l/T;频域采样点1.O=input(,请输入占空比(01):,)EP=zeros(l,N);ch=input(请选择要观察的码型:1-单极性;2.双极性)forloop=l:1000/1000次样本函数取平均ifch=l单极性条件a二(rand(l,M)>0.5)+0;生成单极性序歹IJelse双极性条件a=sign(rand(l,M)>0.5)-05);生成双极性序列endtmp=zeros(LzM);一个码元的归零部分取零1.l=L*L0;占空比,求出一个码元不归零部分的取样点tmp(l±l)=ones(Ll,l)*a;将一个码元不归零部分的取样点值置为1s=tmp(:)'S=t2f(s,fs);傅里叶变化P=abs.丝/T;样本的功率谱密度EP=EP*(1-Voop)+Ploop;随机过程的功率谱是各个样本的功率谱的数学期望endxset("window",l)Pot(t,s)set(gca()z,grid,41zl)title(时域图,)xlabel(,t,)ylabel(,S(t),)mtlb-axis(-3,3,-1.5z1.5);xset("window"z2)plot(tabs(EP+%eps)set(gca(),grid",lzl)title(,功率谱图形。XlabeI(T)ylabeC功率,)mtlb-axis(-35z35,-5zmax(EP+%eps);xset("window",3)plot(f,10*loglO(EP+%eps)set(gca()grid",l,l)titled功率谱图形(dB)XlabeI(T)ylabe功率,)实验四:clearallexect2f.sci;execf2t.sci;/execeyes.sci;functioneyes(result,LzNa)N=length(result);tt=O:l:Na*L;set(gca()z"auto-clear,off")forjj=l:Na*L:N-Na*Lplot(tt,result(jj:jj+Na*L);endset(gca(),auto-clear,on")endfunctionk=input(,请输入采样点数2zxk:(输入k值)');aa=0.5;N=2k;1.=8;M=NL;Rs=2;码率2MbpsTs=VRs;码元间隔dt=TsL;时域采样间隔fs=dt;df=l(N*dt);频域采样间隔T=N*dt;截断时间BS=N*df在;系统带宽t=-T/2+dt/2:dt:T/2;时域横坐标f=-Bs+df/2:df:Bs;频域横坐标alpha=input(,所需要的滚降系数是(01范围):1);/Hcos=Zeros(I7N);il=find(abs(f)>(l-alpha)/(2*Ts)&abs(f)<=(l+alpha)/(2*Ts);Hcos(il)=Ts2*(l+cos(%pi*Tsalpha*(abs(f(il)-(l-alpha)(2*Ts);i2=find(abs(f)<=(l-alpha)(2*Ts);Hcos(i2)=Ts;/GT=sqrt(Hcos);GR=GT;/forloopl=l:20;Eb_NO(loopl)=(loopl-l);/eb_n0(loopl)=10A(Eb_N0(loopl)/10);EP=I;nO=EP/eb_nO(loopl);/sita=nO*Bs;/n_err=O;/EPl=1;ZerOS(LN);EP2=lzeros(l,N);EP3=lzeros(l,N);forIoop2=l:20;b=sign(rand(lzM,"norma,);s=zeros(l,N);/s(L/2:L:N)=b/dt;SS=t2f(szfs);P=abs(SS).八T;/序歹U功率谱密度EP1=EP1*(1-Ioop2)+Ploop2;/S2=SS.*GT;/s2=real(f2t(S2,fs);/PAMP2=abs(S2).T;EP=EP*(1-Voop2)+Ploop2;/nr=sqrt(sita)*rand(l,N,norma,);/sr=s2+nr;/SR=t2f(sr,fs);S=SR.*GR;PS=abs(三).2T;/EP3=EP3*(l-loop2)+PSloop2;/a=real(f2t(S,fs);/sout=real(f2t(Szfs);y=sout(L/2:L:N);/bb=sign(y);/s3=zeros(l,N);/s3(L/2:L:N)=bb/dt;BB=t2f(s3,fs);PB=abs(BB).2T;EP2=EP2*(l-loop2)+PBloop2;/n_err=n_err+length(find(bb=b);/endPe(loopl)=n_err/(M*loop2);xset("window,10)plot(Eb-NOJoglO(Pe÷%eps)g,);/PeEbN0xlabel(,EbNO,)jylabel(,Pe,)jtitle(',Pe-EbNO曲线,);eb_n0=10.A(Eb_N0/10);set(gca(),auto-clear"J,off)plot(Eb_N0,logl0(0.5*erfc(sqrt(eb_n0);mtlb-axis(0,15z-3.5z0);xlabel(,EbNO,)ylabel(,Pe,)Iegend(,实际的,理论的,);set(gca()z"auto-clear,on")endxset(',window',l)plot(fzEPl)title("序列功率谱”)xlabel("f(kHz)")ylabel("功率谱(W/kHz)”)mtlb-axis(-2,2,0,max(EPl)xgridxset("window,2)Pot(t,s)title("发送序列。xlabel(,t(ms)")ylabel("s(t)(V)")mtlb-axis(0,5,-2z2)xgridxset("window',3)Pot(tEP)title(“发送PAM信号功率谱”)xlabel("f(kHz)ylabe(,功率谱(W/kHz)”)mtlb-axis(-2,2,0,max(EP)xgridxset(,window,1,4)Pot(tzs2)title("发送的PAM信号波形”)xlabel(,t(ms)")ylabel("s2(t)(V)")mtlb_axis(0z5z-2.5,2.5)xgridxset(',window,5)plot(t,s3)tit®“采样后的信号波形”)xlabel("t(ms)")ylabel("y(t)(V)")mtlb-axis(0,5,-2,2)xgridxset(,window,z6)plot(f,EP2)title(',采样后的信号功率谱”)xlabel(,f(kHz)")ylabel("功率谱(W/kHz)”)mtlb-axis(-2,2,0,max(EP2)xgridxset("window"z7)plot(t,sout)title(“接收滤波器输出波形”)xlabel("t(ms)ylabel("y(t)(V)")mtlb_axis(0,5,-2z2)xgridxset("window,8)plot(f,EP3)title(“通过接收滤波器后信号的功率谱”)xlabel(,f(kHz)")ylabel(,功率谱(W/kHz)”)mtIb_axis(-2,2,0,max(EP3)xgrid×set(,window,9)title("接收眼图。eyes(sout,L,3)xgrid