通信原理实验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仿真实验报告

通信原理实验五 基于Matlab的2ASK和2FSK调制解调

数字信号调制基于matlab GUI数字信号调制系统含Matlab源码 1030期

通信原理实验六 基于Matlab的2PSK和2DPSK调制

(高分)用Matlab模拟ASK系统(数字信号处理实验)

数字信号调制基于matlab GUI 2ASK+2FSK+2PSK调制解调仿真含Matlab源码 1504期