课程设计报告题目模拟调制仿真目录一.原理 (1)二.编程思想 (2)三.结果 (3)四.分析 (5)五.程序代码 (8)一.原理1.1模拟调制原理模拟调制包括幅度调制(DSB,SSB,AM)和相角调制(频率和相位调制)。
在本次设计中主要讨论模拟调制中的幅度调制,幅度调制即用基带调制信号去控制高频载波的幅度,使其按基带信号的规律变化的过程。
幅度调制主要有AM调制,DSB调制,SSB调制。
他们的调制原理如下,AM调制:AM 是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程;DSB调制:在幅度调制的一般模型中,若假设滤波器为全通网络,调制信号中无直流分量,则输出的已调信号就是无载波分量的双边调制信号,或称抑制载波双边带调制信号;SSB调制:由于 DSB 信号的上、下两个边带是完全对称的,皆携带了调制信号的全部信息,因此从信息传输的角度来考虑,仅传输其中一个边带。
1.2 AM调制AM信号的时域表示式:频谱:调制器模型如图所示:1.3 DSB调制DSB信号的时域表示式频谱:1.4 相干解调相干解调器原理:为了无失真地恢复原基带信号,接收端必须提供一个与接收的已调载波严格同步(同频同相)的本地载波(称为相干载波),它与接收的已调信号相乘后,经低00()[()]cos cos()cos AM c c cs t A m t t A t m t tωωω=+=+1()[()()][()()]2AM c c c c S A M Mωπδωωδωωωωωω=++-+++-⊗()m t()ms tct⊕通滤波器取出低频分量,即可得到原始的基带调制信号DSB的相干解调模型如图所示:二.编程思想1.先在MATLAB中生成一个调制信号(以一个一定频率和振幅的余弦波为调制信号)和载波。
2.结合AM调制和相干解调的过程,在MATLAB中,采用顺序结构,依次模拟调制信号加上直流量,调制载波,通过带通滤波器,通过相干解调器的过程。
3.设计几个子函数生成带通滤波器和低通滤波器,利用函数将时域转换成频域。
(AM调制和DSB调制两者的的编程思想与实现过程类似)三.结果本次设计主要研究在MATLAB中模拟AM调制以及解调的过程。
其过程如下:1.设置调制信号的参数,生成调制信号的波形和频谱,并给调制信号加上直流量。
两种信号的波形和频谱如下:2.在MATLAB中生成载波,并用加入直流的调制信号去调制载波。
两种信号的波形和频谱如下:3.生成噪声和带通滤波器,噪声和信道中的信号的波形和频谱如下:4.通过带通滤波器后的输出信号的波形和频谱以及混频后的信号的波形和频谱如下:5.生成低通滤波器,信号通过低通滤波器。
通过低通滤波器后的输出信号波形和频谱如下:5.恢复信号波形和频谱如下:四.分析1.定性分析:在不同的信噪比下,AM调制后调制信号和恢复信号的比较:在信噪比为100的情况下,恢复信号与调制信号的波形如下:在信噪比为10的情况下,恢复信号与调制信号的波形如下:通过观察上面两张图可知,在大信噪比的情况下,解调信号的失真较小。
而在小信噪比的情况下,解调信号的失真非常严重。
即随着噪声的增大,解调信号和调制信号之间的偏差增大。
2.定量分析在不同的信噪比下,AM调制后调制信号和解调信号的比较:计算在信噪比为100的情况下,恢复信号与调制信号的偏差:求同一时间序列下解调信号同调制信号的差的绝对值,再求这一系列的绝对值的平均值,得到其平均值为0.05516下表为同一时间序列下恢复信号和调制信号的部分值计算在信噪比为10的情况下,解调信号与调制信号的偏差:求同一时间序列下解调信号同调制信号的差的绝对值,再求这一系列的绝对值的平均值,得到其平均值为0.15860结论:即随着噪声的增大,解调信号和调制信号之间的偏差增大。
在不同的信噪比下,DSB调制后调制信号和解调信号的比较:计算在信噪比为100的情况下,解调信号与调制信号的偏差:求同一时间序列下解调信号同调制信号的差的绝对值,再求这一系列的绝对值的平均值,得到其平均值为0.05616下表为同一时间序列下解调信号和调制信号的部分值(2)在信噪比为10的情况下,解调信号与调制信号的偏差:求同一时间序列下解调信号同调制信号的差的绝对值,再求这一系列的绝对值的平均值,得到其平均值为0.19430下表为同一时间序列下解调信号和调制信号的部分值结论:即随着噪声的增大,解调信号和调制信号之间的偏差增大。
此结论与AM调制得出的结论相同。
五.程序代码AM调制代码:fc=18; %载波频率t0=6;%信号时长dt=0.04;%时间间隔fs=1/dt;%系统采样频率snr=100;%解调器输入信噪比df = 0.001;%所需的频率分辨率t=0:dt:t0; %横坐标snr_lin=10^(snr/10);%信噪比m=cos(pi*t);figure(),subplot(221);plot(t,m);axis([0 t0 -1.5 1.5]);xlabel('t');ylabel('调制信号');[M,m,df1,f]=T2F(m,dt,df,fs);%求出调制信号频谱 f subplot(222);plot(f,fftshift(abs(M)));% 画出调制信号频谱xlabel('f');ylabel('调制信号频谱');Lt=length(t);%仿真过程中,信号长度A=3; %假设调制时直流分量为3u1=(A+m(1:Lt));subplot(223);plot(t,u1);% 画出加入直流的调制信号波形xlabel('t');ylabel('加入直流的调调信号');[U1,u1,df1,f]=T2F(u1,dt,df,fs);subplot(224);plot(f,fftshift(abs(U1)))% 画出加入直流的调制信号频谱xlabel('f');ylabel('加入直流的调调信号频谱');figure(),subplot(221);c=cos(2*pi*fc*t);%载波plot(t,c);axis([0 t0 -1.5 1.5]);xlabel('t');ylabel('载波');[C,c,df1,f]=T2F(c,dt,df,fs);subplot(222);plot(f,fftshift(abs(C)))% 画出载波频谱xlabel('f');ylabel('载波频谱');A=3; %假设调制时直流分量为3u=(A+m(1:Lt)).*c(1:Lt);subplot(223);plot(t,u);% 画出已调信号波形%R=2*max(abs(m))+A;%axis([0 t0 -R R]);xlabel('t');ylabel('已调信号');[U,u,df1,f]=T2F(u,dt,df,fs);subplot(224);plot(f,fftshift(abs(U)))% 已调信号频谱xlabel('f');ylabel('已调信号频谱');signal_power = power_x(u(1:Lt)); %已调信号的平均功率[Bw_eq]=signalband(M,df,t0);%求出信号等效带宽noise_power=(signal_power*fs)/(snr_lin*(2* Bw_eq));%求出噪声方差(噪声均值为0)noise_std = sqrt(noise_power); %噪声标准偏差noise = noise_std*randn(1,Lt); %产生噪声%画出信道高斯白噪声波形及频谱,此时,噪声已实现,为确知信号,可求其频谱figure(),subplot(321);plot(t,noise);% 画出噪声波形axis([0 t0 -6 6])xlabel('t');ylabel('噪声信号');subplot(322);[noisef,noise,df1,f]=T2F(noise,dt,df,fs);%噪声频谱plot(f,fftshift(abs(noisef)))% 画出噪声频谱xlabel('f');ylabel('噪声频谱');sam=u(1:Lt)+noise(1:Lt);%叠加了噪声的已调信号subplot(323); %画出叠加了噪声的已调信号波形plot(t,sam);axis([0 t0 -6 6]);xlabel('t');ylabel('信道中的信号');subplot(324);[samf,sam,df1,f]=T2F(sam,dt,df,fs);%求出叠加了噪声的已调信号频谱plot(f,fftshift(abs(samf)))% 画出叠加了噪声的已调信号频谱xlabel('f');ylabel('信道中信号频谱');f_start=fc-Bw_eq;f_cutoff=fc+Bw_eq;[H,f]=bp_f(length(sam),f_start,f_cutoff,df1,fs,1);%求带通滤波器subplot(325);plot(f,fftshift(abs(H)))% 画出带通滤波器xlabel('f');ylabel('带通滤波器');axis([-1*(f_cutoff+1) f_cutoff+1 -1.5 1.5]);DEM = H.*samf; %滤波器输出的频谱[dem]=F2T(DEM,fs);%滤波器的输出波形figure,subplot(221)%经过理想带通滤波器后的信号波形plot(t,dem(1:Lt))%画出经过理想带通滤波器后的信号波形R=2*max(abs(m))+A;%axis([0 t0 -R R]);xlabel('t');ylabel('理想BPF输出信号');[demf,dem,df1,f]=T2F(dem(1:Lt),dt,df,fs);%求经过理想带通滤波器后信号频谱subplot(222)plot(f,fftshift(abs(demf)));% 画出经过理想带通滤波器后信号频谱xlabel('f');ylabel('理想BPF输出信号频谱');der=dem(1:Lt).*c(1:Lt);%混频subplot(223)%画出混频后的信号plot(t,der);axis([0 t0 -R R]);xlabel('t');ylabel('混频后的信号');subplot(224)[derf,der,df1,f]=T2F(der,dt,df,fs);%求混频后的信号频谱plot(f,fftshift(abs(derf)))%画出混频后的信号的频谱xlabel('f');ylabel('混频后信号频谱');figure(),[LPF,f]=lp_f(length(der),Bw_eq,df1,fs,1.9);%求低通滤波器subplot(221)plot(f,fftshift(abs(LPF)));% 画出理想低通滤波器xlabel('f');ylabel('理想LPF');%混频信号经理想低通滤波器后的频谱及波形DM = LPF.*derf; %理想低通滤波器输出的频谱[dm]=F2T(DM,fs);%滤波器的输出波形subplot(223)plot(t,dm(1:Lt));%画出经过低通滤波器后的解调出的波形这里出了问题axis([0 t0 -R R]);xlabel('t');ylabel('LPF输出信号');subplot(224)[dmf,dm,df1,f]=T2F(dm(1:Lt),dt,df,fs);%求LPF输出信号的频谱plot(f,fftshift(dmf));%画出LPF输出信号的频谱xlabel('f');ylabel('LPF输出信号频谱');axis([-fs/2 fs/2 0 0.5]);dmd=dm(1:Lt)-mean(dm(1:Lt));figure(),subplot(221);plot(t,m(1:Lt));% 画出调制信号波形axis([0 t0 -R/2 R/2]);xlabel('t');ylabel('调制信号');subplot(222);plot(f,fftshift(abs(M)));% 画出调制信号频谱xlabel('f');subplot(223),plot(t,dmd);%画出恢复信号(去除直流分量)axis([0 t0 -R/2 R/2]);xlabel('t');ylabel('恢复信号');[dmdf,dmd,df1,f]=T2F(dmd,dt,df,fs);%求恢复信号的频谱subplot(224)plot(f,fftshift(dmdf));%画出恢复信号的频谱xlabel('f');ylabel('恢复信号的频谱');axis([-fs/2 fs/2 0 0.2]);DSB调制代码:fc=18; %载波频率t0=6;%信号时长dt=0.04;%时间间隔fs=1/dt;%系统采样频率snr=10;%解调器输入信噪比df = 0.001;%所需的频率分辨率t=0:dt:t0; %横坐标snr_lin=10^(snr/10);%信噪比m=cos(pi*t);figure(),subplot(321);plot(t,m);axis([0 t0 -1.5 1.5]);xlabel('t');ylabel('调制信号');[M,m,df1,f]=T2F(m,dt,df,fs);%求出调制信号频谱 fsubplot(322);plot(f,fftshift(abs(M)));% 画出调制信号频谱xlabel('f');ylabel('调制信号频谱');c=cos(2*pi*fc*t);%载波subplot(323);plot(t,c);axis([0 t0 -1.5 1.5]);xlabel('t');ylabel('载波');[C,c,df1,f]=T2F(c,dt,df,fs);subplot(324);plot(f,fftshift(abs(C)))% 画出载波频谱xlabel('f');ylabel('载波频谱');Lt=length(t);%仿真过程中,信号长度A=0; %DSB-SCu=(A+m(1:Lt)).*c(1:Lt);%已调信号subplot(325);plot(t,u);% 画出已调信号波形%R=2*max(abs(m))+A;%axis([0 t0 -R R]);xlabel('t');ylabel('已调信号');[U,u,df1,f]=T2F(u,dt,df,fs);subplot(326);plot(f,fftshift(abs(U)))% 画出已调信号频谱xlabel('f');ylabel('已调信号频谱');signal_power = power_x(u(1:Lt)); %已调信号的平均功率[Bw_eq]=signalband(M,df,t0);%求出信号等效带宽noise_power=(signal_power*fs)/(snr_lin*(2* Bw_eq));%求出噪声方差(噪声均值为0)noise_std = sqrt(noise_power); %噪声标准偏差noise = noise_std*randn(1,Lt); %产生噪声%画出信道高斯白噪声波形及频谱,此时,噪声已实现,为确知信号,可求其频谱figure(),subplot(321);plot(t,noise);% 画出噪声波形axis([0 t0 -6 6])xlabel('t');ylabel('噪声信号');subplot(322);[noisef,noise,df1,f]=T2F(noise,dt,df,fs);%噪声频谱plot(f,fftshift(abs(noisef)))% 画出噪声频谱xlabel('f');ylabel('噪声频谱');sam=u(1:Lt)+noise(1:Lt);%叠加了噪声的已调信号subplot(323); %画出叠加了噪声的已调信号波形plot(t,sam);axis([0 t0 -6 6]);xlabel('t');ylabel('信道中的信号');subplot(324);[samf,sam,df1,f]=T2F(sam,dt,df,fs);%求出叠加了噪声的已调信号频谱plot(f,fftshift(abs(samf)))% 画出叠加了噪声的已调信号频谱xlabel('f');ylabel('信道中信号频谱');f_start=fc-Bw_eq;f_cutoff=fc+Bw_eq;[H,f]=bp_f(length(sam),f_start,f_cutoff,df1,fs,1);%求带通滤波器subplot(325);plot(f,fftshift(abs(H)))% 画出带通滤波器xlabel('f');ylabel('带通滤波器');axis([-1*(f_cutoff+1) f_cutoff+1 -1.5 1.5]);DEM = H.*samf; %滤波器输出的频谱[dem]=F2T(DEM,fs);%滤波器的输出波形figure,subplot(321)%经过理想带通滤波器后的信号波形plot(t,dem(1:Lt))%画出经过理想带通滤波器后的信号波形R=2*max(abs(m))+A;%axis([0 t0 -R R]);xlabel('t');ylabel('理想BPF输出信号');[demf,dem,df1,f]=T2F(dem(1:Lt),dt,df,fs);%求经过理想带通滤波器后信号频谱subplot(322)plot(f,fftshift(abs(demf)));% 画出经过理想带通滤波器后信号频谱xlabel('f');ylabel('理想BPF输出信号频谱');der=dem(1:Lt).*c(1:Lt);%混频subplot(325)%画出混频后的信号plot(t,der);axis([0 t0 -R R]);xlabel('t');ylabel('混频后的信号');subplot(326)[derf,der,df1,f]=T2F(der,dt,df,fs);%求混频后的信号频谱plot(f,fftshift(abs(derf)))%画出混频后的信号的频谱xlabel('f');ylabel('混频后信号频谱');figure(),[LPF,f]=lp_f(length(der),Bw_eq,df1,fs,1.9);%求低通滤波器subplot(221)plot(f,fftshift(abs(LPF)));% 画出理想低通滤波器xlabel('f');ylabel('理想LPF');%混频信号经理想低通滤波器后的频谱及波形DM = LPF.*derf; %理想低通滤波器输出的频谱[dm]=F2T(DM,fs);%滤波器的输出波形subplot(223)plot(t,dm(1:Lt));%画出经过低通滤波器后的解调出的波形axis([0 t0 -R R]);xlabel('t');ylabel('LPF输出信号');subplot(224)[dmf,dm,df1,f]=T2F(dm(1:Lt),dt,df,fs);%求LPF输出信号的频谱plot(f,fftshift(dmf));%画出LPF输出信号的频谱xlabel('f');ylabel('LPF输出信号频谱');axis([-fs/2 fs/2 0 0.5]);figure()subplot(221);plot(t,m(1:Lt));% 画出调制信号波形axis([0 t0 -R/2 R/2]);xlabel('t');ylabel('调制信号');subplot(222);plot(f,fftshift(abs(M)));% 画出调制信号频谱xlabel('f');ylabel('调制信号频谱');dmd=dm(1:Lt); %subplot(223),plot(t,dmd);%画出恢复信号(去除直流分量)axis([0 t0 -R/2 R/2]);xlabel('t');ylabel('恢复信号');[dmdf,dmd,df1,f]=T2F(dmd,dt,df,fs);%求恢复信号的频谱subplot(224)plot(f,fftshift(dmdf));%画出恢复信号的频谱xlabel('f');ylabel('恢复信号的频谱');axis([-fs/2 fs/2 0 0.2]);w=dmd-m;3.各种子函数代码:带通滤波器:function[H,f]=bp_f(n,f_start,f_cutoff,df1,fs,p)n_cutoff = floor(f_cutoff/df1);n_cutoffn_start = floor(f_start/df1);n_startf = [0:df1:df1*(n-1)] -fs/2; %频率向量H = zeros(size(f));H(n_start+1:n_cutoff) = p*ones(1,n_cutoff-n_start);H(length(f)-n_cutoff+1:length(f)-n_start) = p*ones(1,n_cutoff-n_start); 低通滤波器:function [H,f]=lp_f(n,f_cutoff,df1,fs,p)n_cutoff = floor(f_cutoff/df1);f = [0:df1:df1*(n-1)] - fs/2;H = zeros(size(f));H(1:n_cutoff) = p*ones(1,n_cutoff);H(length(f) - n_cutoff+1:length(f)) = p*ones(1,n_cutoff);end计算信号有效带宽:function [Bw_eq]=signalband(sf,df,T)%计算信号等效带宽%sf:信号频谱%df:频率分辨率%T:信号持续时间sf_max=max(abs(sf));Bw_eq=20*sum(abs(sf).^2)*df/T/sf_max.^2;End计算信号功率:function p=power_x(x)%x:输入信号%p:返回信号的x功率p=(norm(x).^2)./length(x);序列的傅里叶变换:function [M, m, df]=fftseq(m,ts,df)fs = 1/ts;if nargin ==2n1 =0;elsen1 = fs/df;endn2 = length(m);n = 2^(max(nextpow2(n1),nextpow2(n2)));M = fft(m,n);m = [m,zeros(1,n-n2)];df = fs/n;end信号时域转频域:function [M,m,df1,f]=T2F(m,ts,df,fs)[M,m,df1]=fftseq(m,ts,df);f = [0:df1:df1*(length(m)-1)] -fs/2; %频率向量M=M/fs;信号频域转时域:function [m]=F2T(M,fs)m = real(ifft(M))*fs;。