通信原理实验1 基于Matlab的模拟信号的调制和解调
Posted 毛_三月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通信原理实验1 基于Matlab的模拟信号的调制和解调相关的知识,希望对你有一定的参考价值。
基于Matlab的模拟调制系统仿真
一、实验类型
设计性实验
二、 实验目的
1.掌握模拟系统的调制和解调原理。
2.学会Matlab仿真软件在振幅调制和解调中的应用。
3.掌握参数设置方法和性能分析方法。
4.通过实验中波形的变换,学会分析实验现象。
三、实验原理
所谓调制,就是在传送信号的一方将所要传送的信号附加在高频振荡上,再由天线发射出去。这里高频振荡波就是携带信号的运载工具,也叫载波。在线性调制系列中,最先应用的一种幅度调制是全调幅或常规调幅,简称为调幅(AM)。为了提高传输的效率,还有载波受到抑制的双边带调幅波(DSB)和单边带调幅波(SSB)。他们的具体实现原理见课本(86-104页)。
四、 实验内容
调制信号,载波为。
1.利用上述指标设计AM、DSB、SSB信号实现的Matlab程序,输出调制信号、载波信号以及已调信号波形以及频谱图,并改变参数观察信号变化情况,进行实验分析。
2.在信道中各自加入经过带通滤波器后的窄带高斯白噪声,功率为0.1,解调AM、DSB、SSB信号,输出并观察解调信号波形,分析实验现象。
例:AM信号的调制和解调
dt=0.0001;
t=-0.05:dt:0.05;
A0=2; %直流分量
fc=1000; %载波频率
fm=100; %基带信号频率
m=cos(2*pi*fm*t);
c=cos(2*pi*fc*t);
s=(A0+m).*c; %已调信号
N=length(m);
f=(-N/2:1:N/2-1)/dt/N;
M=fft(m);
Mh=abs(fftshift(M)); % 基带信号频谱
C=fft(c);
Ch=abs(fftshift(C)); % 载波信号频谱
S=fft(s);
Sh=abs(fftshift(S)); % 已调信号频谱
subplot(431);plot(t,c);
title('载波信号');
subplot(432);plot(t,m);
title('基带信号');
subplot(433);plot(t,s);
title('已调信号');
subplot(434);plot(f,abs(Ch));
title('载波信号频谱');
subplot(435);plot(f,abs(Mh));
title('基带信号频谱');
subplot(436);plot(f,abs(Sh));
title('已调信号频谱');
y=2*c.*s; %相干解调
wp=2*pi*1000;ws=2*pi*3000;Ap=1;As=80; %低通滤波器参数设置
[N,wc]=buttord(wp,ws,Ap,As,'s');
[num,den]=butter(N,wc,'s');
omega1=linspace(0,wp,500);
omega2=linspace(wp,ws,200);
omega3=linspace(ws,5*1000*pi*2,500);
H1=20*log10(abs(freqs(num,den,omega1)));
H2=20*log10(abs(freqs(num,den,omega2)));
H3=20*log10(abs(freqs(num,den,omega3)));
fprintf('Ap=%.4f\\n',max(-H1));
fprintf('As=%.4f\\n',min(-H3));
subplot(437);
plot([omega1 omega2 omega3]/(2*pi),[H1 H2 H3]);
title('滤波器特性');
y1=lsim((tf(num,den)),y,t);
y2=y1-A0;
subplot(438);plot(t,y2);
title('解调信号');
Y2=fft(y2);
Y2h=abs(fftshift(Y2));
subplot(439);plot(f,Y2h);
title('解调信号频谱');
包络检波:
abs(hilbert(pt)); %包络检波法
说明:matlab中,由hilbert函数得到的信号是合成的复信号,其虚部才是书上定义的Hilbert变换。
一、
AM:
DSB:
dt=0.0001;
t=-0.05:dt:0.05;
A0=0; %直流分量
fc=1000; %载波频率
fm=100; %基带信号频率
m=cos(2*pi*fm*t);
c=cos(2*pi*fc*t);
s=(A0+m).*c; %已调信号
N=length(m);
f=(-N/2:1:N/2-1)/dt/N;
M=fft(m);
Mh=abs(fftshift(M)); % 基带信号频谱
C=fft(c);
Ch=abs(fftshift(C)); % 载波信号频谱
S=fft(s);
Sh=abs(fftshift(S)); % 已调信号频谱
subplot(431);plot(t,c);
title('载波信号');
subplot(432);plot(t,m);
title('基带信号');
subplot(433);plot(t,s);
title('已调信号');
subplot(434);plot(f,abs(Ch));
title('载波信号频谱');
subplot(435);plot(f,abs(Mh));
title('基带信号频谱');
subplot(436);plot(f,abs(Sh));
title('已调信号频谱');
y=2*c.*s; %相干解调
wp=2*pi*1000;ws=2*pi*3000;Ap=1;As=80; %低通滤波器参数设置
[N,wc]=buttord(wp,ws,Ap,As,'s');
[num,den]=butter(N,wc,'s');
omega1=linspace(0,wp,500);
omega2=linspace(wp,ws,200);
omega3=linspace(ws,5*1000*pi*2,500);
H1=20*log10(abs(freqs(num,den,omega1)));
H2=20*log10(abs(freqs(num,den,omega2)));
H3=20*log10(abs(freqs(num,den,omega3)));
fprintf('Ap=%.4f\\n',max(-H1));
fprintf('As=%.4f\\n',min(-H3));
subplot(437);
plot([omega1 omega2 omega3]/(2*pi),[H1 H2 H3]);
title('滤波器特性');
y1=lsim((tf(num,den)),y,t);
y2=y1-A0;
subplot(438);plot(t,y2);
title('解调信号');
Y2=fft(y2);
Y2h=abs(fftshift(Y2));
subplot(439);plot(f,Y2h);
title('解调信号频谱');
abs(hilbert(pt)); %包络检波法
SSB:
fm=10;fc=40;
am=sqrt(2);
Fs=300; %采样频率Fs,载波频率fc,信号频率fm
wc=2*pi*fc;
wm=fm*2*pi;
N=300;
n=0:N-1;
t=n/Fs; %时间序列
f=n*Fs/N;
%基带信号时域
sm=am*cos(wm*t);
figure(1);
subplot(211);
plot(t,sm);
title('基带信号');
xlabel('t');
axis([0 1 -2 2]);
grid on
%基带信号频域
S=fft(sm,300);%300点的fft
SG=abs(S);
subplot(212);
plot(f(1:N/2),SG(1:N/2)); %SSB信号频域波形
xlabel('Frequency(HZ)');
title('基带信号频域波形 ');
grid on;
%SSB调制信号时域
s=modulate(sm,fc,Fs,'amssb'); %对调制信号进行调制
S=fft(s,300);
SG=abs(S);
figure(2);
subplot(211);
plot(t,s); %SSB信号时域波形
title('SSB信号时域波形 ');
xlabel('t');
subplot(212);
plot(f(1:N/2),SG(1:N/2)); %SSB信号频域波形
xlabel('Frequency(HZ)');
title('SSB信号频域波形 ');
grid on;
%-------------------------------------------------------------------------
%解调
fm=10;%信号频率fm
fc=40;%载波频率fc
am=sqrt(2);
Fs=300; %采样频率Fs
wc=2*pi*fc;
wm=fm*2*pi;
N=300;
n=0:N-1;
t=n/Fs; %时间序列
f=n*Fs/N;
sm=am*cos(wm*t);
s=modulate(sm,fc,Fs,'amssb');
sd=demod(s,fc,Fs,'amssb'); %对SSB信号进行解调
SD=fft(sd,300);
SDG=abs(SD);
figure(3);
subplot(2,1,1);
plot(t,sd); %解调后的时域波形
title('解调后的时域波形');
xlabel('t');
axis([0 1 -2 2]);
subplot(2,1,2);
plot(f(1:N/2),SDG(1:N/2)); %解调后的频域波形
title('解调后的频域波形');
xlabel('Frequency(HZ)');
axis([0 150 0 300]);
grid on;
以上是关于通信原理实验1 基于Matlab的模拟信号的调制和解调的主要内容,如果未能解决你的问题,请参考以下文章
通信原理实验五 基于Matlab的2ASK和2FSK调制解调