matlab实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟调制与解调
一、实验目的
1.掌握AM调制和解调的原理和MATLAB仿真实现
2.掌握DSB调制和解调的原理和MATLAB仿真实现
3.掌握SSB调制和解调的原理和MATLAB仿真实现
4.掌握相干解调法原理、信号的频谱特性,及其MATLAB仿真实现
二、实验要求
1.利用MATLAB仿真实现模拟幅度调制过程,以及相干解调过程。
仿真绘制调制信号和已调信号的时域波形图、绘制已调信号的包络、绘制已调信号的功率谱,绘制解调器输出的信号波形图。
2.结合幅度调制和解调的原理,对程序每一行做注释。
3.改变载波频率、直流偏量等参数观察信号波形和频谱的变化。
三、实验原理
1.AM:AM是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程;
2.DSB:在幅度调制的一般模型中,若假设滤波器为全通网络,调制信号中无直流分量,则输出的已调信号就是无载波分量的双边调制信号,或称抑制载波双边带调制信号;
3.SSB:由于DSB信号的上、下两个边带是完全对称的,皆携带了调制信号的全部信息,因此从信息传输的角度来考虑,仅传输其中一个边带就好了。
四、实验内容
1.调幅(AM)
%显示模拟调制的波形方法,文件S_AM.m
%Signal
dt=0.001;%时间采样间隔
fmax=1; %信源最高频率
fc=16; %载波中心频率
T=5;%信号时长
N=floor(T/dt);%(取整函数)采样的个数
t=[0:N-1]*dt;%时间(产生一个一维数组);
mt=sqrt(2)*cos(2*pi*fmax*t);%调制信号即信源
%AM modulation
A=2;%直流分量
s_am=(A+mt).*cos(2*pi*fc*t);%调幅信号
%Power Spectrum Density
[f,Xf]=FFT_SHIFT(t,s_am);%(调幅信号频谱)进行傅里叶变换,时域变频域
PSD=(abs(Xf).^2)/T;%平均功率
%figure 0f am and psd
figure(1)%Create figure window创建一个窗口
subplot(211);%reate axes in tiled positions.两行一列第一行
plot(t,s_am);hold on;%以t为横轴s_am为纵轴,(hold on表示将图像保留住)
plot(t,A+mt,'r--');%以t为横轴A+mt为纵轴(表示包络)r:红线;--:表示虚线
title('AM调制信号及其包络');%表名
xlabel('t');%横轴
axis([0,T,1.1*min(s_am),1.5*max(s_am)]);% axis([XMIN XMAX YMIN YMAX]) 限制范围
subplot(212);%reate axes in tiled positions.两行一列第二行
plot(f,PSD);%以频率为横轴功率为纵轴
axis([-2*fc 2*fc 0 1.2*max(PSD)]);% axis([XMIN XMAX YMIN YMAX]) 限制范围
title('AM信号功率谱');%表名
xlabel('f');%横轴为:f
%AM demodulation
rt=s_am.*cos(2*pi*fc*t);%调幅信号与同频同相的相干载波相乘
rt=rt-mean(rt);%解调输出,解调信号
[f,sf]=FFT_SHIFT(t,rt);%傅里叶变换(时域信号转换为频域信号)
B=2*fmax;%基带带宽
[t,rt]=RECT_LPF(f,sf,B);%整流低通滤波
figure(2);%Create figure window创建一个窗口
subplot(411);%reate axes in tiled positions.四行一列第一行
plot(t,rt);hold on;%以t为横轴,画相干解调信号,保留
plot(t,mt/2,'r--');%以t为横轴,画调制信号*1/2
title('AM相干解调后的信号与输入信号的比较');%表名
xlabel('t')%横轴
直流分量:A=1;载波中心频率:fc=10;波形如下图:
直流分量:A=2;载波中心频率:fc=10;波形如下图:
直流分量:A=2;载波中心频率:fc=16;波形如下图:
2.抑制载波双边带调制(DSB)
dt=0.001;%时间采样间隔
fmax=1; %信源最高频率
fc=16; %载波中心频率
T=5;%信号时长
N=T/dt;%采样的个数
t=[0:N-1]*dt;%时间(产生一个一维数组);
mt=sqrt(2)*cos(2*pi*fmax*t);%调制信号即信源
dsb_md=mt.*cos(2*pi*fc*t);%双边调制信号
[f,sf]=FFT_SHIFT(t,dsb_md);%(调幅信号频谱)进行傅里叶变换,时域变频域
PSD=(abs(sf).^2)/T;%平均功率
figure(1)%Create figure window创建一个窗口
subplot(211);%reate axes in tiled positions.两行一列第一行
plot(t,dsb_md);hold on;%以t为横轴dsb_md为纵轴,(hold on表示保留住)
plot(t,mt,'r--');%以t为横轴mt为纵轴(表示包络)r:红线;--:表示虚线
title('DSB调制信号及其包络');%表名
xlabel('t');%横轴
subplot(212);%reate axes in tiled positions.两行一列第二行
plot(f,PSD);%(功率谱图像)以频率为横轴功率为纵轴
axis([-2*fc 2*fc 0 1.5*max(PSD)]);% axis([XMIN XMAX YMIN YMAX]) 限制范围
title('DSB信号功率谱');
xlabel('f');
rt=dsb_md.*cos(2*pi*fc*t);%进行相干解调,与同频同相的相干载波相乘
B=2*fmax;%基带带宽
[f,Sf]=FFT_SHIFT(t,rt);%进行傅里叶变换,时域变频域
[t,rt]=RECT_LPF(f,Sf,B);%通过低通滤波器
figure(2);%Create figure window创建一个窗口
subplot(411);%reate axes in tiled positions.四行一列第一行
plot(t,rt);hold on;%以t为横轴,画相干解调信号,保留
plot(t,mt/2,'r--');%以t为横轴,画调制信号*1/2
title('相干调解后的信号与输入信号的比较');%表名
xlabel('t');%横轴
直流分量:A=0;载波中心频率:fc=10;波形如下图:
直流分量:A=0;载波中心频率:fc=16;波形如下图:
3.单边带调制(SSB)
dt=0.001;%时间采样间隔
fmax=1; %信源最高频率
fc=16; %载波中心频率
T=5;%信号时长
N=T/dt;%采样的个数
t=[0:N-1]*dt;%时间(产生一个一维数组);
mt=sqrt(2)*cos(2*pi*fmax*t);%调制信号即信源
dsb_md=mt.*cos(2*pi*fc*t);%双边调制信号
[f,sf]=FFT_SHIFT(t,dsb_md);%(调幅信号频谱)进行傅里叶变换,时域变频域PSD=(abs(sf).^2)/T;%平均功率
figure(1)%Create figure window创建一个窗口
subplot(211);%reate axes in tiled positions.两行一列第一行
plot(t,dsb_md);hold on;%以t为横轴dsb_md为纵轴,(hold on表示保留住)
plot(t,mt,'r--');%以t为横轴mt为纵轴(表示包络)r:红线;--:表示虚线
title('DSB调制信号及其包络');%表名
xlabel('t');%横轴
subplot(212);%reate axes in tiled positions.两行一列第二行
plot(f,PSD);%(功率谱图像)以频率为横轴功率为纵轴
axis([-2*fc 2*fc 0 1.5*max(PSD)]);% axis([XMIN XMAX YMIN YMAX]) 限制范围
title('DSB信号功率谱');
xlabel('f');
rt=dsb_md.*cos(2*pi*fc*t);%进行相干解调,与同频同相的相干载波相乘
B=2*fmax;%基带带宽
[f,Sf]=FFT_SHIFT(t,rt);%进行傅里叶变换
[t,rt]=RECT_LPF(f,Sf,B);%通过低通滤波器
figure(2);%Create figure window创建一个窗口
subplot(411);%reate axes in tiled positions.四行一列第一行
plot(t,rt);hold on;%以t为横轴,画相干解调信号,保留
plot(t,mt/2,'r--');%以t为横轴,画调制信号*1/2
title('相干调解后的信号与输入信号的比较');%表名
xlabel('t');%横轴
载波中心频率:fc=10;波形如下图:
载波中心频率:fc=16;波形如下图:
五、附录
1.傅里叶变换函数
function[f,Xf]=FFT_SHIFT(t,xt)
%This is a function using the FFT to calculate
%transform
%Input is the time and the signal vectors,the length of %than 2
%Output is the frequency and the signal spectrum
dt=t(2)-t(1);
T=t(end);
df=1/T;
N=length(t);
f=[floor(-N/2):floor(N/2)-1]*df;
Xf=fft(xt);
Xf=T/N*fftshift(Xf);
2.低通滤波
function[t,st]=RECT_LPF(f,Sf,B)
df=f(2)-f(1);
fN=length(f);
RectH=zeros(1,fN);
BN=floor(B/df);
BN_SHIFT=[-BN:BN-1]+floor(fN/2);
RectH(BN_SHIFT)=1;
Yf=RectH.*Sf;
[t,st]=IFFT_SHIFT(f,Yf);
3.傅里叶逆变换函数
function[t,st]=IFFT_SHIFT(f,Sf)
df=f(2)-f(1);
fmax=(f(end)-f(1)+df);
dt=1/fmax;
N=length(f);
t=[0:N-1]*dt;
Sf=fftshift(Sf);
st=fmax*ifft(Sf);
st=real(st);
六、实验总结
本次实验,遇到的难题还是比较多的,比如说上手使用MATLAB 程序,某些编程语言相对生僻,对完成注释也造成了些许困难。
在调试过程中也会碰到问题,但经过与同学讨论之后最终得以解决。
总的来说,本次实验是一个较好的理论接触实际的机会,巩固了前期所学的理论知识,也让我对MATLAB程序操作也有了一定程度的掌握,希望在接下来的学习和实验中能够继续锻炼自己,争取做到独立思考独立解决问题。