%dsb.m
%双边带调制与解调的Matlab演示源程序
%可以任意改原调制信号函数m(t)
%本例调制信号为m(t)=sinc(100*t)
echo off
close all
clc
t0=0.2; %信号的持续时间,用来定义时间向量
ts=0.001; %抽样间隔
fs=1/ts; %抽样频率
%*********************************************************************
fc=300; %载波频率,fc可以任意改变
%*********************************************************************
t=[-t0/2:ts:t0/2]; %时间向量
df=0.25; %所需的频率分辨率
%*********************************************************************
m=sinc(100*t); %调制信号,m(t)可以任意更改
%*********************************************************************
c=cos(2*pi*fc.*t); %载波信号函数,照原理上它也可以任意更改
u=m.*c; %已调信号
y=u.*c; %混频信号,用来提取原调制信号的频率
[M,m,df1]=fftseq(m,ts,df); %对调制信号m(t)求傅里叶变换
M=M/fs; %缩放,便于在频谱图上整体观察
[U,u,df1]=fftseq(u,ts,df); %对调制后的信号u求傅里叶变换
U=U/fs; %缩放
[Y,y,df1]=fftseq(y,ts,df); %对混频后的信号y求傅里叶变
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; %ifft为傅里叶反变换函数,滤波器的输出-解调信号
%乘以fs是为了恢复原信号,因为前面使用了缩放
disp('按任意键可看到混频的效果')
pause
figure(1)
subplot(3,1,1)
plot(f,fftshift(abs(M)))%fftshift:将FFT中的DC分量移到频谱中心
title('原调制信号的频谱图')
xlabel('频率f')
subplot(3,1,2)
plot(f,fftshift(abs(U)))
title('已调信号的频谱图')
xlabel('频率f')
subplot(3,1,3)
plot(f,fftshift(abs(Y)))
title('混频信号的频谱图')
xlabel('频率f')
disp('按任意键可看到混频器输出的波形的频谱效果')
pause
figure(2)
subplot(3,1,1)
plot(f,fftshift(abs(Y)))
title('混频信号的频谱图')
xlabel('频率f')
subplot(3,1,2)
plot(f,fftshift(abs(H)))
title('低通滤波器的频谱图')
xlabel('频率f')
subplot(3,1,3)
plot(f,fftshift(abs(DEM)))
title('混频信号通过滤波器后的信号的频谱图')
xlabel('频率f')
disp('按任意键可看到原调制信号和接受信号频谱的比较')
pause
figure(3)
subplot(2,1,1)
plot(f,fftshift(abs(M)))
title('原调制信号的频谱图')
xlabel('频率f')
subplot(2,1,2)
plot(f,fftshift(abs(DEM)))
title('混频信号通过滤波器后的信号的频谱图')
xlabel('频率f')
disp('按任意键可看到原调制信号和解调器输出信号对比')
pause
figure(4)
subplot(2,1,1)
plot(t,m(1:length(t)))
title('原调制信号的时域图')
xlabel('时间t')
subplot(2,1,2)
plot(t,dem(1:length(t)))
title('解调后信号的时域图')
xlabel('时间t')
评论0