📄 dsb_dem.m
字号:
% dsb_dem.m
% DSB调制解调的Matlab源程序。被调信号
% 当0<t<t0/3时为+1,当t0/3<t<2*t0/3为-2,其它情况下为零.
t0=0.15; % 信号的持续时间
ts=1/1500; % 抽样时间
fc=250; % 载波频率
fs=1/ts; % 抽样频率
df=0.3; % 所需的频率分辨率
t=[0:ts:t0]; % 时间向量
%% 信息信号
m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];% 被调信号
c=cos(2*pi*fc.*t);% 载波信号
u=m.*c; % 调制信号
y=u.*c; % 混频信号
%% 傅立叶变换
[M,m,df1]=fftseq(m,ts,df);
M=M/fs;
[U,u,df1]=fftseq(u,ts,df);
U=U/fs;
[Y,y,df1]=fftseq(y,ts,df); % 混频信号的频谱有两个高频分量,要用滤波器把它滤掉
% 才能恢复原始信号
Y=Y/fs;
%% 滤波器的设计
f_cutoff=150; %滤波器的截止频率
n_cutoff=floor(150/df1);
f=[0:df1:df1*(length(y)-1)]-fs/2;
H=zeros(size(f));
H(1:n_cutoff)=2*ones(1,n_cutoff);
H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);
%% 滤波器的输出
DEM=H.*Y; % 输出的频谱
dem=real(ifft(DEM))*fs;
%% 画图
subplot(3,1,1);
plot(t,m(1:length(t)))
title('被调信号m(t)')
subplot(3,1,2);
plot(t,y(1:length(t)))
title('混频气输出信号y(t)')
subplot(3,1,3);
plot(t,dem(1:length(t)))
title('解调器输出信号dem(t)')
pause
clf
subplot(3,1,1);
plot(f,fftshift(abs(M)))
title('被调信号频谱M(f)')
subplot(3,1,2);
plot(f,fftshift(abs(Y)))
title('混频气输出信号频谱Y(f)')
subplot(3,1,3);
plot(f,fftshift(abs(DEM)))
title('解调器输出信号频谱DEM(f)')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -