DSB调制与解调(matlab实现)

一、为什么要引入双边带调制(DSB)?

AM信号可表示为:

其中,A_{c} \cdot \cos \left(2 \pi f_{c} t\right) 就是载波分量,它是一个不携带任何信息的纯正弦波。 如果将直流Ac去掉,即可得到一种高调制效率的调制方式——DSB调制。此时,DSB信号的全部功率都用于信息传输,调制效率是100%。

二、DSB调制与解调的原理

AM(幅度调制)和DSB(双边带调制)密切相关,从表达式上对比两种调制方式更为直观。

 DSB调制的表达式为:

与AM调制相比,DSB调制去掉了载波部分,只保留了调制信号,这意味着节省了功率,因为载波部分在接收时并不携带信息。 DSB调制的原理图如下图所示:

但DSB信号的包络不再与调制信号变化规律一致,解调时只能采用相干解调。DSB解调的原理图如下图所示:

三、matlab代码实现

1.DSB.m

% DSB调制解调过程
close all; clc;
%% 基本参数
fm = 100;                       %基带信号频率
T = 2;                          %基带信号时长
fs = 20000;                     %采样频率,满足奈奎斯特采样定理
dt = 1/fs;                      %采样间隔
N = T/dt;                       %采样点数
t = 0:dt:(N-1)*dt;              %采样点的时间序列,作为横坐标

%% ******************调制信号时域波形******************
Am = 1;%基带信号幅值
mt = Am*cos(2*pi*fm*t);         %基带信号时域表达式
figure(1);                      %创建新图像
subplot(3,2,1);                 %创建3×2的子图集合,显示在(1,1)位置
plot(t,mt,'Linewidth',1);       %绘图,线宽为1
xlabel('时间/t');
ylabel('幅度');
title('调制信号时域波形');
axis([0,0.1,-1.1,1.1]);         %横纵坐标范围[xmin,xmax,ymin,ymax]

%% ******************调制信号频域波形******************
[f,mf] = T2F(t,mt);
subplot(3,2,2);
plot(f,mf,'r','Linewidth',1);
xlabel('f/Hz');
ylabel('幅度');
title('调制信号的频谱');
axis([-150,150,-inf,inf]);

%% ******************载波信号时域波形******************
fc = 1000;                      %载波频率
zaibo = cos(2*pi*fc*t);         %载波时域表达式
subplot(3,2,3);
plot(t,zaibo,'Linewidth',1);
xlabel('t/时间');
ylabel('幅度');
title('载波信号时域波形');
axis([0,0.01,-1.1,1.1]);

%% ******************载波信号频域波形******************
[f1,zaibof] = T2F(t,zaibo);
subplot(3,2,4);
plot(f1,zaibof,'r','Linewidth',1);
xlabel('f/Hz');
ylabel('幅度');
title('载波信号的频谱');
axis([-1200,1200,-inf,inf]);

%% ******************DSB波信号时域波形*****************
dsb = mt.*zaibo;
subplot(3,2,5);
plot(t,dsb,'Linewidth',1);
xlabel('t/时间');
ylabel('幅度');
title('DSB调制信号');
axis([0,0.02,-1.5,1.5]);

%% ******************DSB波信号频域波形*****************
[f2,dsbf] = T2F(t,dsb);
subplot(3,2,6);
plot(f2,dsbf,'r','Linewidth',1);
xlabel('f/Hz');
ylabel('幅度');
title('DSB波信号的频谱');
axis([-1500,1500,-inf,inf]);

%% ******************相干解调*****************
%% ****************已调信号与载波信号相乘的时域图***************
SNR = 20;
awgn(dsb,SNR,'measured');       %信道传输,考虑有噪声干扰
st = dsb.*zaibo;
figure(2);
subplot(2,1,1);
plot(t,st,'Linewidth',1);
xlabel('t/时间');
ylabel('幅度');
title('已调信号与载波信号相乘');
axis([0,0.02,-1.5,1.5]);

%% ****************已调信号与载波信号相乘的频谱图***************
[f3,stf] = T2F(t,st);
subplot(2,1,2);
plot(f3,stf,'r','Linewidth',1);
xlabel('f/Hz');
ylabel('幅度');
title('已调信号与载波相乘的频谱');
axis([-150,150,-inf,inf]);

%% ********************解调出来的信号******************
yf = lpf(f3,stf,2*fm);              %低通滤波
[t,yt] = F2T(f3,yf);                %做IFFT变换
figure(3);
subplot(2,1,1);
plot(t,2*yt,'Linewidth',1);
xlabel('t/时间');
ylabel('幅度');
title('解调出来的信号');
axis([0,0.1,-1.1,1.1]);

%% ***********************原信号***********************
subplot(2,1,2);
plot(t,mt,'g','Linewidth',1);
xlabel('t/时间');
ylabel('幅度');
title('原信号');
axis([0,0.1,-1.1,1.1]);

2.T2F.m

%傅里叶变换
function [f,mf] = T2F(t,mt)
N = length(t);                  %采样点数
T = t(end);                     %输入信号的时间最大值为T
df = 1/T;                       %频谱分辨率
f = -N/2*df:df:N/2*df-df;       %频率分布,作频谱图的横坐标
mf = fft(mt);                   %做FFT
mf = T/N*fftshift(mf);          %频谱搬移+归一化

3.F2T.m

%傅里叶逆变换(IFFT)
function [t,yt] = F2T(f,yf)
df = f(2)-f(1);
N = length(f);
fmax = (f(end)-f(1)+df);    %不能像T2F里T=t(end)
                            %因为t是从0开始,
                            %但f是经过搬移的不是从0开始
dt = 1/fmax;
t = 0:dt:dt*(N-1);

yf = fftshift(yf);          %千万别忘!将0-fs频谱搬到-fs/2-fs/2
yt = fmax*ifft(yf);         %不要忘记归一化*fmax
yt = real(yt);              %取实部

4.lpf.m

%低通滤波器
function yf = lpf(f,sf,B)
N = length(f);                      %采样点数
df = f(2)-f(1);                     %频率间隔
ym = zeros(1,N);                    %创建1×N的全零数组
xm = floor(B/df);                   %带宽/频率间隔,向下取整,计算需要的采样点数
xm_shift = [-xm:xm-1]+floor(N/2);   % 因为前面做FFT将0频率搬移到中心处,
                                    % 因此,低通低频频率相应地搬移fN/2,才是对应的频率点
ym(xm_shift) = 1;                   % 低通通过频率处幅度为1,其余为0,相当于理想低通
yf = ym.*sf;                        %信号经过理想低通滤波器

四、结果图

 

五、思考

1.注意区别F2T.m与T2F.m中fmax与T的求法

fmax = f(end)-f(1)+df ;

T = t(end) ;

t 我们设定起始点为0,因此时间长度为t 的终点。而 f 我们进行了搬移,起始点不为0,只能用差值来计算带宽。另外,还需注意末尾+df,将f(end)的值也包含进去。

2.做 ifft 时,也不要忘记 fftshift() 先进行频谱搬移

参考

DSB的调制与解调icon-default.png?t=N7T8https://blog.csdn.net/qq_47598782/article/details/128303744?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172378777616800226565959%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172378777616800226565959&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-128303744-null-null.nonecase&utm_term=DSB%E8%B0%83%E5%88%B6&spm=1018.2226.3001.4450

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值