基于MATLAB的模拟信号传输系统实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信原理实验实验8 基于MATLAB的模拟信号传输系统实验
班级:04xx103
学号:04xxx0913
姓名:xxx
通信原理软件实验
实验8 基于MATLAB的模拟信号传输系统实验
一、AM调制解调
(1)实验原理及框图
调制:AM是诸多调制方式中最简单的一种模拟调制方式,AM信号的时域和频域表达式分别为
式中,A0为外加的直流分量;m(t)为模拟基带信号,可以是确知信号也可以是随机信号,但通常认为其平均值为0,即。
AM信号波形可用包络检波法很容易地恢复原始信号但为了保证包络检波时不发生失真,必须满足。
否则将出现过调幅现象而带来失真。
AM调制器模型
解调:对于接收端而言,一般说来AM信号有两种解调方式,相干解调法和非相干解调法,这里只介绍相干解调法。
对于相干解调而言,将已调AM信号乘上一个与调制器同频同相的载波, 得
再经过低通滤波器,滤去第 2 项高频分量,即可无失真地恢复出原始的调制信号:
AM解调原理框图
(2)实验结果
信号频率为2KHz,载波频率为20KHz,采样率为1MHz,信噪比为5
基带信号和载波信号AM信号及频谱(100%调制)AM信号及频谱(0%调制)AM信号及频谱(50%调制)通过带通滤波器信号及频谱和相干解调通过低通滤波器信号及频谱
(3)程序代码
close all;
clear;
clc;
fs=1e6;
N=8000;
t=0:1/fs:(N-1)/fs;
f=(0:(N-1))*fs/N-fs/2;
fm=2000;
fss=20000;
m=cos(fm*2*pi*t);%基带信号subplot(4,1,1);
plot(t,m);
title('基带信号','FontWeight','bold'); xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
m_w=fft(m);%基带频谱
subplot(4,1,2);
plot(f,fftshift(abs(m_w)));
title('基带频谱','FontWeight','bold'); xlabel('f/Hz','FontSize',12);
axis([-10000,10000,0,3500]);
s=cos(fss*2*pi*t);%载波信号subplot(4,1,3);
plot(t,s);
title('载波信号','FontWeight','bold'); xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
s_w=fft(s);%载波频谱
subplot(4,1,4);
plot(f,fftshift(abs(s_w)));
title('载波频谱','FontWeight','bold'); xlabel('f/Hz','FontSize',12);
axis([-30000,30000,0,3500]);
sm=s.*(1+m);%调制信号
figure;
subplot(4,1,1);
plot(t,sm);
title('调制信号','FontWeight','bold'); xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
sm_w=fft(sm);%调制信号频谱subplot(4,1,2);
plot(f,fftshift(abs(sm_w)));
title('调制信号频谱','FontWeight','bold'); xlabel('f/Hz','FontSize',12);
axis([-30000,30000,0,2000]);
sm1=awgn(sm,5);%加信道噪声后的调制信号subplot(4,1,3);
plot(t,sm1);
title('加信道噪声后的调制信号','FontWeight','bold');
xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
sm1_w=fft(sm1);%加信道噪声后的调制信号频谱
subplot(4,1,4);
plot(f,fftshift(abs(sm_w)));
title('加信道噪声后的调制信号频谱','FontWeight','bold');
xlabel('f/Hz','FontSize',12);
axis([-30000,30000,0,2000]);
fsamp=1e6;%采样频率为1MHz
fcuts = [16000 17500 22500 24000];
mags = [0 1 0];
devs = [0.05 0.01 0.05];
[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs amp);
hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale'); sm2=fftfilt(hh,sm1);
figure;
subplot(4,1,1);%经过带通滤波器后的调制信号
plot(t,sm2);
title('经过带通滤波器后的调制信号','FontWeight','bold');
xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
sm2_w=fft(sm2);%经过带通滤波器后的调制信号频谱
subplot(4,1,2);
plot(f,fftshift(abs(sm2_w)));
title('经过带通滤波器后的调制信号频谱
','FontWeight','bold');
xlabel('f/Hz','FontSize',12);
axis([-30000,30000,0,2000]);
sp=2*sm2.*s;%与本地载波相乘后的信号subplot(4,1,3);
plot(t,sp);
title('与本地载波相乘后的信号','FontWeight','bold');
xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
sp_w=fft(sp);%与本地载波相乘后的信号频谱subplot(4,1,4);
plot(f,fftshift(abs(sp_w)));
title('与本地载波相乘后的信号频谱','FontWeight','bold');
xlabel('f/Hz','FontSize',12);
axis([-45000,45000,0,1200]);
fsamp = 1e6;%采样频率为1MHz
fcuts = [3000 20000];
mags = [1 0];devs = [0.01 0.05];%通带波动1%,阻带波动5%
[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs amp);
hh1=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale'); sd=fftfilt(hh1,sp);%低通滤波后的信号figure;
subplot(4,1,1);
plot(t,sd);
title('低通滤波后的信号','FontWeight','bold'); xlabel('t/s','FontSize',12);
axis([0.001,0.004,-2,2]);
sd_f=fft(sd);%低通滤波后的信号频谱subplot(4,1,2);
plot(f,fftshift(abs(sd_f)));
title('低通滤波后的信号频谱','FontWeight','bold');
xlabel('f/Hz','FontSize',12);
axis([-10000,10000,0,3500]);
二、FM调制解调
(1)实验原理及框图
调制:非线性调制通常是通过改变载波的频率或相位来达到的,而频率或相位的变化都可以看成是载波角度的变化,故这种调制又称角度调制。
调频波的表示式为
解调:调制信号的解调分为相干解调和非相干解调两种。
相干解调仅仅适用于窄带调频信号,且需同步信号,故应用范围受限;而非相干解调不需同步信号,且对于窄带角度调制信号和宽带角度调制信号均适用,因此是角度调制系统的主要解调方式。
FM 非相干解调模型
(2)实验结果
基带信号和积分后信号
载波和调制信号及频谱
加噪和滤噪后的调制信号及频谱(SNR=3)
解调信号
(3)程序代码
close all;
clear all;
clc;
snr=30;
fs=1e6; %采样率
N=8001; %采用点数
t=0:1/fs:(N-1)/fs; %时域采样点f=(0:(N-1))*fs/N-fs/2; %频域采样点(均匀分布在2两侧)
fm=2000; %基带频率fss=20000; %载波频率fmk=5; %调频系数
A=1; %载波幅度
m=A*cos(fm*2*pi*t); %信息信号subplot(411);
plot(t,m);
title('基带信号');
xlabel('t/s');
axis([0.001,0.008,-2,2]); %坐标的x轴和y轴的最小最大
mw=fft(m);
subplot(412);
plot(f,fftshift(abs(mw)));
xlabel('f/Hz');
axis([-10000,10000,0,5500]); %fft后的幅度值变为N/2倍
w1=0;w2=0;
for n=1:length(t); %积分器的原理w1=m(n)+w2; %m为信号的矩阵表示,m(n)代表m矩阵的第n个数
w2=m(n)+w1; %用梯形的面积
fi(n)=w1/(1e6); %fi(n)是指n点之前的所有面积
end
fi=fi/max(abs(fi)); %归一化消除了1e6带来的幅度大小
subplot(413);
plot(t,fi);
title('积分后的信号');
xlabel('t/s');axis([0.001,0.008,-1,1]);
fiw=fft(fi);
subplot(414);
plot(f,fftshift(abs(fiw)));
title('积分后信号的频谱');
xlabel('f/Hz');
axis([-10000,10000,0,5500]);
fil=fi*fmk;
s=A*cos(fss*2*pi*t);
figure;
subplot(411);
plot(t,s);
title('载波信号');
xlabel('t/s');
axis([0.001,0.008,-2,2]);
sw=fft(s);
subplot(412);
plot(f,fftshift(abs(sw)));
title('载波频谱');
xlabel('f/Hz');
axis([-30000,30000,0,5500]);
%进行FM调制
sfm=A*s.*cos(fil)-A*sin(fss*2*pi*t).*sin(fil); subplot(413);
plot(t,sfm);
title('调制后的信号');
xlabel('t/s');
axis([0.001,0.008,-2,2]);
sfmw=fft(sfm);
subplot(414);
plot(f,fftshift(abs(sfmw)));
title('调制后信号的频谱');
xlabel('f/Hz');
axis([-40000,40000,0,1500]); %因为用倍角展开有个0.5,所以y坐标的数值为0.25
%加噪声
figure;
sfm1=awgn(sfm,snr);
subplot(411);
plot(t,sfm1);
title('加了噪声后的调制信号');
xlabel('t/s');
axis([0.001,0.005,-2,2]);
sfm1w=fft(sfm1);
subplot(412);
plot(f,fftshift(abs(sfm1w)));
title('加了噪声后的调制信号的频谱');
xlabel('f/Hz');
axis([-40000,40000,0,1500]);
%通过带通滤波器
fsamp=1e6;
fcuts=[2000 9000 37000 38000];
mags=[0 1 0];
devs=[0.05 0.01 0.05];
[n,Wn,beta,ftype]=kaiserord(fcuts,mags,devs,fs amp);
hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale'); sfm2=fftfilt(hh,sfm1); %通过带通滤波器后的信号
subplot(413);
plot(t,sfm2);
title('滤掉部分噪声后的调制信号');
xlabel('t/s');
axis([0.001,0.008,-2,2]);
sfm2w=fft(sfm2);
subplot(414);
plot(f,fftshift(abs(sfm2w)));
title('滤掉部分噪声后调制信号频谱');
xlabel('f/Hz');
axis([-40000,40000,0,1500]); %经过微分器
figure;
dt=0.000001;
for i=1:length(t)-1
sfm2(i)=(sfm2(i+1)-sfm2(i))/dt; end
sfm2=sfm2/max(abs(sfm2)); subplot(411);
plot(t,sfm2);
axis([0.001,0.008,-2,2]);
title('微分后的信号');
for i=1:length(sfm2)-1
sfm2(i)=(sfm2(i)+sfm2(i+1))/2; end
for i=1:length(sfm2)-1
sfm2(i)=(sfm2(i)+sfm2(i+1))/2; end
sfm3=abs(hilbert(sfm2));
for i=1:length(sfm3)-1
sfm3(i)=(sfm3(i)+sfm3(i+1))/2; end
subplot(412);
plot(t,sfm3);
axis([0.001,0.008,-2,2]);
title('检波幅度');
a1=(max(sfm3)-min(sfm3))/2;
for k=1:length(t)
sfm3(k)=sfm3(k)-a1;
end
subplot(413);
plot(t,sfm3);
axis([0.002 0.008 -1 1]);
title('解调后信号');。