《通信原理》AM/DSBSC/SSB信号的调制与解调仿真

一、实验内容

利用matlab实现以下内容:

1.信号的调幅。根据随机产生的整数和已知条件来计算:

(1)AM、DSBSC、SSB信号的消息信号和已调信号的频谱;

(2)AM、DSBSC、SSB信号的消息信号和已调信号的功率及调制效率。

2.信号的解调。在1的基础上计算:

(1)用包络检波器解调该信号,画出AM、DSBSC、SSB信号的原始信号和解调信号。

(2)假设调制信号通过AWGN信道,信噪比为20dB,画出AM、DSBSC、SSB信号的解调后的信号与原始信号。

二、实验结果

        实验一:消息信号是[-3,3]均匀分布的随机整数,产生的时间间隔为1/10s,用AM、DSBSC、LSSB、移相法方法调制载波cos2πfct。假设fc=100,A0=4,0<=t<=10,求:

  1. AM/DSBSC/SSB信号的消息信号和已调信号的频谱。
  2. AM/DSBSC/SSB信号的消息信号和已调信号的功率及调制效率。

1.实验代码

%% AM/DSBSC/SSB信号调幅

ts=0.0025;                          %信号抽样时间间隔。
t=0:ts:10-ts;                       %时间矢量。
fs=1/ts;                            %抽样频率。
df=fs/length(t);                    %fft的频率分辨率。
z=rng(123);                         %生成123个种子数。
msg=randi([-3,3],100,1);            %生成消息序列。
msg1=msg*ones(1,fs/10);             %扩展成取样信号形式。
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs;                    %求消息信号的频率。
f=-fs/2:df:fs/2-df;

figure('name','AM和DSBSC信号仿真','position',[0,40,2000,750]);
subplot(3,2,1);
plot(f,fftshift(abs(Pm)),'r');      %画出消息信号频谱。
title('AM和DSBSC的消息信号频谱','fontname','黑体');
xlabel('f');
ylabel('消息信号频谱','fontname','黑体');
grid on;

A=4;
fc=100;                               %载波频率。
Sam=(A+msg2).*cos(2*pi*fc*t);         %AM已调信号。
Pam=fft(Sam)/fs;                      %AM已调信号频谱。
Sdsb=msg2.*cos(2*pi*fc*t);            %DSBSC已调信号。
Pdsb=fft(Sdsb)/fs;                    %DSBSC已调信号频谱。

subplot(3,2,3);
plot(f,fftshift(abs(Pam)),'b',f,fftshift(abs(Pdsb)),'g');%画出已调信号频谱。
title('AM和DSBSC的已调信号频谱','fontname','黑体');
axis([-200,200,0,3]);
xlabel('f');
ylabel('消息信号频谱','fontname','黑体');
legend('AM已调信号频谱','DSBSC已调信号频谱','location','n');
grid on;

Pc_AM=sum(abs(Sam).^2)/length(Sam);   %已调信号功率。
Ps_AM=Pc_AM-A^2/2;                 %消息信号功率。
eta_AM=Ps_AM/Pc_AM;                   %调制效率
Pc_DSBSC=sum(abs(Sdsb).^2)/length(Sdsb);    %已调信号功率。
Ps_DSBSC=sum(abs(msg2).^2)/length(msg2);    %消息信号功率。

%% SSB的调制-用滤波法形成单边带(SSB)信号

ts=0.0025;                      %抽样信号的时间间隔。
t=0:ts:10-ts;                   %时间矢量。
fs=1/ts;                        %抽样频率。
df=fs/length(t);                %fft的频率分辨率。
msg=randi([-3,3],100,1);        %生成消息序列。
z=rng(123);                     %随机种子数为123。
msg1=msg*ones(1,fs/10);         %扩展成取样信号形式。
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs;                %求消息信号的频谱。
f=-fs/2:df:fs/2-df;
subplot(3,2,2);
plot(f,fftshift(abs(Pm)));      %画出消息信号频谱。
title('SSB的消息信号频谱');

fc=100;                         %载波频率。
Sdsb=msg2.*cos(2*pi*fc*t);      %DSB信号。
Pdsb=fft(Sdsb)/fs;              %DSB信号频谱。

f_stop=100;                     %低通滤波器的截止频率。
n_stop=floor(f_stop/df);
Hlow=zeros(size(f));            %设计低通滤波器。
Hlow(1:n_stop)=1;
Hlow(length(f)-n_stop+1:end)=1;
Plssb=Pdsb.*Hlow;               %LSSB信号频谱。
subplot(3,2,4);
plot(f,fftshift(abs(Plssb)),'y');           %画出已调信号频谱。

Slssb=real(ifft(Plssb))*fs;
Pc_SSB_FM=sum(abs(Slssb).^2)/length(Slssb); %滤波法的SSB已调信号功率。
Ps_SSB_FM=sum(abs(msg2).^2)/length(msg2);   %滤波法的SSB消息信号功率。

%% SSB的调制-用相移法形成单边带(SSB)信号
s1=0.5*msg2.*cos(2*pi*fc*t);                %USSB信号的同相分量。
hmsg=imag(hilbert(msg2));                   %消息信号的Hibert变换。
s2=0.5*hmsg.*sin(2*pi*fc*t);                %USSB信号的正交分量。
Sussb=s1-s2;                                %完整的USSB信号。
Pussb=fft(Sussb)/fs;                        %USSB信号频谱。
subplot(3,2,4);
hold on;
plot(f,fftshift(abs(Pussb)));               %画出已调信号频谱。
title('滤波法和相移法的SSB已调信号频谱');
axis auto;
legend('滤波法的SSB已调信号频谱','相移法的SSB已调信号频谱','location','n');

Pc_SSB_PSM=sum(abs(Sussb).^2)/length(Sussb);%相移法的SSB已调信号功率。
Ps_SSB_PSM=sum(abs(msg2).^2)/length(msg2);  %相移法的SSB消息信号功率。

%% AM和DSBSC的功率及占比值
fprintf('AM已调信号功率:Pc_AM=%.2f\n',Pc_AM);
fprintf('AM消息信号功率:Ps_AM=%.2f\n',Ps_AM);
disp(['AM调制效率:eta_AM=',num2str(100*eta_AM),'%']);
fprintf('DSBSC已调信号功率:Pc_DSBSC=%.2f\n',Pc_DSBSC);
fprintf('DSBSC消息信号功率:Ps_DSBSC=%.2f\n',Ps_DSBSC);

%% SSB的功率及占比值
fprintf('滤波法的SSB已调信号功率:Pc_SSB_FM=%.2f\n',Pc_SSB_FM);
fprintf('滤波法的SSB消息信号功率:Ps_SSB_FM=%.2f\n',Ps_SSB_FM);
fprintf('相移法的SSB已调信号功率:Pc_SSB_PSM=%.2f\n',Pc_SSB_PSM);
fprintf('相移法的SSB消息信号功率:Ps_SSB_PSM=%.2f\n',Ps_SSB_PSM);
W=[Pc_AM,Ps_AM,Pc_DSBSC,Ps_DSBSC,Pc_SSB_FM,Ps_SSB_FM,Pc_SSB_PSM,Ps_SSB_PSM];

%% AM/DSBSC/SSB的功率占比图
subplot(3,2,6);
pie3(W);
title('AM/DSBSC/SSB的功率占比图','fontname','黑体');
legend('AM已调信号功率','AM消息信号功率','DSBSC已调信号功率','DSBSC消息信号功率','滤波法的SSB已调信号功率','滤波法的SSB消息信号功率','相移法的SSB已调信号功率','相移法的SSB消息信号功率');

2.实验结果

         

实验二:消息信号是[-3,3]均匀分布的随机整数,产生的时间间隔为1/2s,用AM、DSBSC、移相法方法调制载波cos2πfct。假设fc_AM=fc_DSBSC=100,fc_SSB=300,A0=4,0<=t<=5,求:

(1)   用包络检波器解调该信号,画出AM信号的原始信号和解调信号。

(2)   假设调制信号通过AWGN信道,信噪比为20dB,画出AM信号的解调后的信号与原始信号。

(3)   用同步检波解调该信号,设低通滤波器的截止频率为100Hz,增益为2,画出DSBSC信号的原始信号和解调信号。

(4)   假设调制信号通过AWGN信道,信噪比为20dB,画出DSBSC信号的解调后的信号与原始信号。

(5)   用同步检波解调该信号,设低通滤波器的截止频率为100Hz,增益为4,画出SSB信号的原始信号和解调信号。

(6)   假设调制信号通过AWGN信道,信噪比为20dB,画出SSB信号的解调后的信号与原始信号。

1.实验代码

%% AM/DSBSC/SSB信号的解调

%% AM和DSBSC信号的解调
a=2;b=2;
ts=0.0025;                              %信号抽样时间间隔。
t=0:ts:5-ts;                            %时间矢量。
fs=1/ts;                                %抽样频率。
df=fs/length(t);                        %fft的频率分辨率。
f=-fs/2:df:fs/2-df;
z=rng(123);                             %生成123个种子数。
msg=randi([-3,3],10,1);                 %生成消息序列。
msg1=msg*ones(1,fs/2);                  %扩展成取样信号形式。
msg2=reshape(msg1.',1,length(t));

figure('name','AM和DSBSC信号解调','position',[0,40,2000,750]);
subplot(a,b,1);
plot(t,msg2,'r');                       %画出消息信号频谱。
ylim([0,5]);
title('AM和DSBSC的消息信号','fontname','黑体');

fc_DSBSC=100;A=4;
Sdsb=msg2.*cos(2*pi*fc_DSBSC*t);        %DSBSC已调信号。
y_AM=Sdsb.*cos(2*pi*fc_DSBSC*t);        %DSBSC相干解调。
Y_AM=fft(y_AM)./fs;                     %DSBSC解调后的频谱。
f_stop=100;                             %DSBSC低通滤波器的截止频率。
n_stop=floor(f_stop/df);
Hlow=zeros(size(f));                    %DSBSC设计低通滤波器。
Hlow(1:n_stop)=2;
Hlow(length(f)-n_stop+1:end)=2;
DEM=Y_AM.*Hlow;                         %DSBSC解调信号通过低通滤波器。
dem=real(ifft(DEM))*fs;                 %DSBSC最终得到的解调信号。
Sam=(A+msg2).*cos(2*pi*fc_DSBSC*t);     %AM已调信号。
dems=abs(hilbert(Sam))-A;               %AM包络检波,并且去掉直流分量。
subplot(a,b,2);
plot(t,dems,'b',t,dem,'g');             %画出解调信号。
ylim([0,5]);
title('AM和DSBSC的无噪声解调信号','fontname','黑体');
legend('AM的无噪声解调信号','DSBSC的无噪声解调信号','location','b');

y_AM=awgn(Sam,20,'measured');           %AM调制信号通过AWGN信道。
dems2=abs(hilbert(y_AM))-A;             %AM包络检波,并且去掉直流分量。
y1_DSBSC=awgn(Sdsb,20,'measured');      %DSBSC调制信号通过AWGN信道。
y2_DSBSC=y1_DSBSC.*cos(2*pi*fc_DSBSC*t);%DSBSC相干解调。
Y2_DSBSC=fft(y2_DSBSC)./fs;             %DSBSC解调信号的频谱。
DEM1=Y2_DSBSC.*Hlow;                    %DSBSC解调信号通过低通滤波器。
dem1=real(ifft(DEM1))*fs;               %DSBSC最终得到的解调信号。
subplot(a,b,3);
plot(t,dems2,'b',t,dem1,'g');           %画出AM解调信号。
ylim([0,5]);
title('信噪比为20dB时的AM和DSBSC的解调信号','fontname','黑体');
legend('信噪比为20dB时的AM的解调信号','信噪比为20dB时的DSBSC的解调信号','location','b');

%% SSB信号的解调
y1_SSB=awgn(Sussb,20,'measured');       %调制信号通过AWGN信道。
y2_SSB=y1_SSB.*cos(2*pi*fc*t);          %相干解调。
Y2_SSB=fft(y2_SSB)./fs;                 %解调信号的频谱。
DEM1=Y2_SSB.*Hlow;                      %解调信号通过低通滤波器。
dem1=real(ifft(DEM1))*fs;               %最终得到的解调信号。
subplot(a,b,4);
plot(t,dem1,'m');
title('SSB信噪比为20dB时的解调信号');

fc=300;                                 %载波频率。
s1=0.5*msg2.*cos(2*pi*fc*t);            %USSB信号的同相分量。
hmsg=imag(hilbert(msg2));               %消息信号的Hibert变换。
s2=0.5*hmsg.*sin(2*pi*fc*t);            %USSB信号的正交分量。
Sussb=s1-s2;                            %完整的USSB信号。

y_SSB=Sussb.*cos(2*pi*fc*t);            %相干解调。
Y_SSB=fft(y_SSB)./fs;                   %解调后的频谱。
f_stop=100;                             %低通滤波器的截止频率。
n_stop=floor(f_stop/df);
Hlow=zeros(size(f));                    %设计低通滤波器的截止频率。
Hlow(1:n_stop)=4;
Hlow(length(f)-n_stop+1:end)=4;
DEM=Y_SSB.*Hlow;                        %解调信号通过低通滤波器。
dem=real(ifft(DEM))*fs;                 %最终得到的解调信号。
subplot(a,b,4);
hold on;
plot(t,dem,'b');
title('SSB无噪声的解调信号');

msg1=msg*ones(1,fs/2);                  %扩展取样信号形式。
msg2=reshape(msg1.',1,length(t));
Pm=fft(msg2)/fs;                        %求信息信号的频谱。
subplot(a,b,4);
hold on;
plot(t,msg2,'g');                       %画出消息信号频谱。
title('SSB的原始消息信号','fontname','黑体');
ylim([0,5]);
legend('SSB的原始消息信号','SSB无噪声的解调信号','SSB信噪比为20dB时的解调信号','location','b');

2.实验结果

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AM调制解调波形主要用来传输模拟信号,原理是将载波的幅度按照模拟信号的变化进行调制。在时域上,AM调制的波形可以通过调制信号的正弦波和乘法器进行实验。通过调制信号的幅度变化可以观察到载波的幅度也会相应变化。在频域上,AM调制的波形可以通过调制信号和载波的频谱进行实验。可以观察到调制信号谱在载波频率附近形成了较宽的sidebands频带。解调实验中,可以通过振幅调制解调器将AM调制波形还原为原始的调制信号。 DSB调制解调波形是一种双边带调制技术,它利用了调制信号的正负频率部分进行调制。在时域上,DSB调制的波形可以通过调制信号和载波的乘法器进行实验。通过调制信号的正负频率部分变化可以观察到载波的幅度也会相应变化。在频域上,DSB调制的波形可以通过调制信号和载波的频谱进行实验。可以观察到调制信号谱的正负频率部分在载波频率附近形成了相对对称的sidebands频带。解调实验中,可以通过相干解调器将DSB调制波形还原为原始的调制信号SSB调制解调波形是一种单边带调制技术,它只利用了调制信号的一侧频率部分进行调制。在时域上,SSB调制的波形可以通过调制信号和载波的乘法器进行实验。通过调制信号的一侧频率部分变化可以观察到载波的幅度也会相应变化。在频域上,SSB调制的波形可以通过调制信号和载波的频谱进行实验。可以观察到调制信号谱的一侧频率部分在载波频率附近形成了单边带的sidebands频带。解调实验中,可以通过相干解调器将SSB调制波形还原为原始的调制信号。 FM调制解调波形是一种频率调制技术,它根据调制信号的幅度变化来调制起始频率。在时域上,FM调制的波形可以通过调制信号和载波的相位敏感相移锁相环进行实验。通过调制信号的幅度变化可以观察到载波的相位也会相应变化。在频域上,FM调制的波形可以通过调制信号和载波的频谱进行实验。可以观察到调制信号谱在载波频率附近形成了较宽的sidetone频带。解调实验中,可以通过频率鉴频器将FM调制波形还原为原始的调制信号。 ### 回答2: 在时域中,AM调制解调波形是实验过程中最简单的一种。AM调制的过程是将原始信号与载波信号相乘得到调制信号,然后在接收端利用包络检测或同步检测的方法解调出原始信号实验中,我们可以使用Matlab生成不同频率和幅度的原始信号,然后与载波信号进行相乘运算,得到调制信号。接收端也可以通过Matlab进行包络检测或同步检测操作,得到解调后的信号。 DSB调制解调波形相较于AM调制较为复杂。DSB调制是将原始信号与载波信号进行相乘,并通过带通滤波器滤掉其中一个频带的波形。在实验中,我们可以使用Matlab生成原始信号和载波信号,然后进行相乘运算,并通过带通滤波器将其中一个频带滤掉,得到DSB调制的波形。解调时,通过再次与载波信号相乘,并通过低通滤波器得到原始信号SSB调制解调波形相较于DSB调制更为复杂。SSB调制是通过希尔伯特变换将原始信号变换到虚数域,然后与载波信号进行相乘得到调制信号实验中,我们可以使用Matlab进行希尔伯特变换得到虚数域的信号,然后与载波信号相乘得到SSB调制的波形。解调时,通过与载波信号相乘得到幅度为负的虚数域信号,然后进行希尔伯特变换得到原始信号。 VSB调制解调波形相较于SSB调制更为复杂。VSB调制是将原始信号通过带通滤波器得到频带限制信号,然后将该信号与载波信号相乘得到调制信号实验中,可以使用Matlab生成原始信号,并经过带通滤波器得到频带限制信号,再与载波信号相乘得到VSB调制的波形。解调时,利用与载波信号相乘得到的调制信号通过带通滤波器得到频带限制信号,然后得到原始信号。 FM调制解调波形在频域中体现出频率偏移的特点。FM调制是通过原始信号的频率变化来实现调制,即频率越高时,调制信号的幅度越大。实验中,可以使用Matlab生成原始信号,并通过频率偏移得到调制信号解调时,可以使用Matlab进行频率解调,通过波形的变化得到原始信号

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值