备注1:对于一个渴望学好matlab的学生来说,没有详细注释的答案以及老师不讲解的是很苦逼的,你懂的,送给想学的孩子。备注2:此程序的原创不是我,本人只是对此程序的小错作了些修改完善,若还有错互相学习,敬上!备注3:即使你考研也要学好,每一份知识都是宝贵的,加油,苦逼的我们!第一题Test.m文件%Copyright(c)2012.Nantonguniversitycollegeofelectronicinformation%Allrightsreserved%Referencemanual:CommunicationTheoryandMATLABTUTORIAL%Version:12.2012.%mender:pengge%Compiler:matlab7.0.1forcommunicationtheory%abstract:TheconventionalAMmodulation%http:*************%mail:464887559@qq.comclear%清除所有变量clc%清空commandwindowclf%清空figure%变量及公式等初始化t0=0.15;%基带信号的周期ts=0.001;%抽样时间fc=250;%载波频率snr=20;%信噪比(单位DB)fs=1/ts;%抽样频率df=0.3;%抽样频率分辨率t=(0:ts:t0);%时间范围0到t0,间隔tssnr_lin=10^(snr/10);%信噪比的单位转换m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];%基带信号序列c=cos(2.*pi.*fc.*t);%载波u=[2+0.85*m].*c;%已调信号%第一小题figure(1)%第一幅图subplot(2,1,1)%sunplot(m,n,p)大图中的小图,m为大图中有几行小图,n为有几列,p为第几个图plot(t,m(1:length(t)),'r')%画图函数plot(x,y)x为横坐标,y为纵坐标,一一对应xlabel('Time')%横坐标标识title('基带信号')%标题subplot(2,1,2)%注释同上plot(t,u(1:length(t)),'g')%注释同上xlabel('Time')%注释同上title('调制信号')%注释同上pause%pressanykeytoseeplotofthecarrierandthemodulaedsignal%第二小题[M,m,df1]=fftseq(m,ts,df);%调用fftseq函数对基带信号经行fft变换M=M/fs;%频率采样[U,u,df1]=fftseq(u,ts,df);%调用fftseq函数对已调信号经行fft变换U=U/fs;%频率采样f=[0:df1:df1*(length(m)-1)]-fs/2;%频谱横坐标频率取值范围及间隔%第二幅图figure(2)subplot(2,1,1)plot(f,abs(fftshift(M)),'r')%abs()取模函数%对正负半轴的图形取各自的对称xlabel('frequency')title('基带信号频谱')subplot(2,1,2)plot(f,abs(fftshift(U)),'g')%注释同上xlabel('frequency')title('调制信号频谱')pause%第三题,第四题dt=0.01;%采样间隔signal_power=sum(u.*u)*dt/(length(t).*dt)%已调信号功率noise_power=signal_power/snr_lin%噪声功率pause%第五题noise_std=sqrt(noise_power);%噪声的标准差n=noise_std*randn(1,length(u));%产生最后的噪声r=u+n;%第三幅图figure(3);subplot(2,1,1)%噪声时域显示plot(t,n(1:length(t)),'r')title('噪声信号')subplot(2,1,2)%加噪调制信号时域显示plot(t,r(1:length(t)),'g')title('信号加噪声信号')pause%第六题[N,n,df1]=fftseq(n,ts,df);%对噪声进行fftN=N/fs;%频率采样[R,r,df1]=fftseq(r,ts,df);%对最后的信号进行fftR=R/fs;%频率采样%第四幅图figure(4)subplot(2,1,1)%噪声频域显示plot(f,abs(fftshift(N)),'r')%axis([-20020000.15])%横坐标-200到200,纵坐标0到0.15title('噪声信号频谱')subplot(2,1,2)%加噪调制信号频域显示plot(f,abs(fftshift(R)),'g')title('信号加噪声信号频谱')%axis([-50050000.15])%横坐标-500到500,纵坐标0到0.15pausefttseq.m文件function[M,m,df]=fftseq(m,ts,df)%FFTSEQ生成M,它是时间序列m的FFT%要求的频率分辨率df作为输入%对序列填充零以满足所要求的频率分辨率df%ts是采样间隔.输出df是最终的频率分辨率%输出m是输入m的补过零的版本是FFT.fs=1/ts;%抽样频率n1=fs/df;n2=length(m);%基带信号序列的长度n=2^(max(nextpow2(n1),nextpow2(n2)));%nextpow2取最接近的较大2次幂%比如数1000,那么靠的最近的(且比他大的)数就是1024=2^10,%并且fft的N必须是2的多少次方M=fft(m,n);%matlab库自带的fft函数m=[m,zeros(1,n-n2)];%时间序列补零df=fs/n;%得到最终的频率分辨率第二大题Test2.m文件%Copyright(c)2012.Nantonguniversitycollegeofelectronicinformation%Allrightsreserved%Referencemanual:CommunicationTheoryandMATLABTUTORIAL%Version:12.2012.%mender:pengge%Compiler:Matlab7.0.1forcommunicationtheory%abstract:Informationchannelcalculatinandanalysis%http:*************%mail:464887559@qq.comclear%清除所有变量clc%清除指令窗clf%清除图形b=3000;%带宽sn0=-20;%信噪比下限(单位DB)sn1=30;%信噪比上限(单位DB)ns=0.01;%采样间隔N=(sn0:ns:sn1);%横坐标信噪比范围snrlin=10.^(N/10);%信噪比单位转换ct=b.*log2(1+snrlin.*(1/b));%信道容量公式plot(snrlin,ct,'r')%画图xlabel('s/n0')%横坐标标志title('高斯信道容量')%标题pause%按enter进入下一个clear%清除所有变量clc%清除指令窗clf%清除图形snr=25;%信噪比sn1=10.^(snr/10);%信噪比单位转换b0=300000;%带宽上限bs=10;%采样间隔B=(3000:bs:b0);%带宽范围b=1./B;%带宽倒数ct=B.*(log2(1+sn1.*b));%信道容量公式plot(B,ct,'g')%画图xlabel('B')%横坐标标志title('信道容量')%标题ct=log2(exp(sn1))%当B无限大时的公式%ct=(1/log(2)*sn1)%注意log(2)==ln2第三大题Test3.m文件%Copyright(c)2012.Nantonguniversitycollegeofelectronicinformation%Allrightsreserved%Referencemanual:CommunicationTheoryandMATLABTUTORIAL%Version:12.2012.%mender:pengge%Compiler:matlab7.0.1forcommunicationtheory%abstract:%http:*************%mail:464887559@qq.comclearall;%清除所有变量clf;%清除图形Tb=1;%信号所代表一个符号的总时间f1=1000/Tb;%信号u1频率f2=f1+1/Tb;%信号u2频率phi=pi/4;%相位N=12000;%4位2进制的信号总采样点n=N/4;%一个符号的信号采样点t=0:Tb/(n-1):Tb;%t=0:1/(n-1):1;一位T=0:4*Tb/(N-1):4*Tb;%T=0:4*1/(N-1):4*1;4位s1=[cos(2*pi*f1*t+phi)cos(2*pi*f1*t+phi)cos(2*pi*f1*t+phi)cos(2*pi*f1*t+phi)];s2=[cos(2*pi*f2*t+phi)cos(2*pi*f2*t+phi)cos(2*pi*f2*t+phi)cos(2*pi*f2*t+phi)];%assumethetransmitsignalis1010,ie.u2u1andu2u1r=[cos(2*pi*f2*t+phi)cos(2*pi*f1*t+phi)cos(2*pi*f2*t+phi)cos(2*pi*f1*t+phi)];%risthereceivedsignalb=r.*s1;c=r.*s2;forj=1:4fori=1:n;d((j-1)*n+i)=sum(b((j-1)*n+1:(j-1)*n+i));%量化细分面积法end;end;%求积分forj=1:4fori=1:n;e((j-1)*n+i)=sum(c((j-1)*n+1:(j-1)*n+i));%同上end;end;%求积分forj=1:4;ifd(j*n)e(j*n);f((j-1)*n+1:j*n)=zeros(1,n);%输出0elsef((j-1)*n+1:j*n)=ones(1,n);%输出1end;end;%比较器%以下详细注释参见第一大题与第二大题%第一幅图figure(1)plot(T,r,'r');xlabel('时间');ylabel('幅度');title('输入信号');pause%第二幅图figure(2)subplot(2,1,1);plot(T,b);ylabel('幅度');title('r乘以s1后的信号');subplot(2,1,2)plot(T,c);ylabel('幅度');xlabel('时间');ylabel('幅度');title('r乘以s2后的信号');pause%第二幅图figure(3)subplot(3,1,1);plot(T,d);ylabel('幅度');title('r*s1积分后的信号');subplot(3,1,2);plot(T,e,'r');ylabel('幅度');title('r*s2积分后的信号');subplot(3,1,3);plot(T,f,'g');xlabel('时间');ylabel('幅度');title('最终输出信号');第四大题Test4.m文件%Copyright(c)2012.Nantonguniversitycollegeofelectronicinformation%Allrightsreserved%Referencemanual:CommunicationTheoryandMATLABTUTORIAL%Version:12.2012.%mender:pengge