题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/65b9d178622ecd978adfc10d5198a594.png)
使用matlab自带函数
fft_seq.m文件
function [M,m,df]=fft_seq(m,ts,df)
fs=1/ts;
if nargin==2,n1=0;
else,n1=fs/df;
end;
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);
m=[m,zeros(1,n-n2)];
df=fs/n;
clear all;clc;
%DSB-AM 和SSB-AM调制/解调 (自带函数)
t0=0.15;
ts=0.001;
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)];%定义信号序列
u1=ammod(m,Fc,Fs);%DSB-AM调制信号
y1=amdemod(u1,Fc,Fs); %DSB-AM解调信号
u2=ssbmod(m,Fc,Fs);%SSB-AM调制信号
y2=ssbdemod(u2,Fc,Fs);%SSB-AM解调信号
[M,m,df1]=fft_seq(m,ts,df); %傅里叶变换
M=M/Fs; %缩放
[U1,u1,df1]=fft_seq(u1,ts,df);
U1=U1/Fs;
[Y1,y1,df1]=fft_seq(y1,ts,df);
Y1=Y1/Fs;
[U2,u2,df1]=fft_seq(u2,ts,df);
U1=U1/Fs;
[Y2,y2,df1]=fft_seq(y2,ts,df);
Y2=Y2/Fs;
f=[0:df1:df1*(length(m)-1)] -Fs/2;
clf;figure(1)
subplot(3,2,1);
plot(t,m(1:length(t)));
title('DSB-AM未调制信号');
subplot(3,2,2);
plot(t,u1(1:length(t)));
title('DSB-AM已调制信号');
subplot(3,2,3);
plot(t,y1(1:length(t)));
title('DSB-AM解调信号');
% subplot(3,2,4);
% plot(f,abs(fftshift(Y1)));
% title('DSB-AM解调信号频谱');
subplot(3,2,5);
plot(f,abs(fftshift(M)));
title('DSB-AM未调制信号频谱');
subplot(3,2,6);
plot(f,abs(fftshift(U1)));
title('DSB-AM已调制信号频谱');
%%%%%%%%%%%%%%%%%%%
figure(2)
subplot(3,2,1);
plot(t,m(1:length(t)));
title('SSB-AM未调制信号');
subplot(3,2,2);
plot(t,u1(1:length(t)));
title('SSB-AM已调制信号');
subplot(3,2,3);
plot(t,y2(1:length(t)));
title('SSB-AM解调信号');
% subplot(3,2,4);
% plot(f,abs(fftshift(Y2)));
% title('SSB-AM解调信号频谱');
subplot(3,2,5);
plot(f,abs(fftshift(M)));
title('SSB-AM未调制信号频谱');
subplot(3,2,6);
plot(f,abs(fftshift(U2)));
title('SSB-AM已调制信号频谱');
效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/949f604c21c773187283accb67faa45b.png)
未使用matlab自带的函数
DSB-AM调制与解调
clear all;clc;
%DSB-AM调制与解调 (未使用自带函数)
t0=0.15;
ts=0.001;
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]=fft_seq(m,ts,df); %傅里叶变换
M=M/Fs;
[U,u,df1]=fft_seq(u,ts,df);
U=U/Fs;
[Y,y,df1]=fft_seq(y,ts,df);
Y=Y/Fs;
f_cutoff=150;
n_cutoff=floor(150/df1);
f=[0:df1:df1*(length(m)-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,2,1);
plot(t,m(1:length(t)));
title('DSB-AM未调制信号');
subplot(3,2,2);
plot(t,u(1:length(t)));
title('DSB-AM已调制信号');
subplot(3,2,3);
plot(t,dem(1:length(t)));
title('DSB-AM解调信号');
subplot(3,2,4);
plot(f,abs(fftshift(DEM))); %解调信号的频谱
title('DSB-AM解调信号频谱');
subplot(3,2,5);
plot(f,abs(fftshift(M)));
title('DSB-AM未调制信号频谱');
subplot(3,2,6);
plot(f,abs(fftshift(U))); %已调制信号频谱
title('DSB-AM已调制信号频谱');
效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2a3afd642f5b2492eeebe12546433c22.png)
SSB-AM调制与解调
clear all;clc;
%SSB-AM调制与解调 (未使用自带函数)
t0=0.15;
ts=0.001;
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); %载波信号
b=sin(2*pi*Fc.*t);
u=m.*c; %调制信号
y=u.*c;
ussb=m.*c-imag(hilbert(m)).*b; %上边带调制信号
lssb=m.*c+imag(hilbert(m)).*b; %下边带调制信号
[M,m,df1]=fft_seq(m,ts,df); %傅里叶变换
M=M/Fs;
[U,u,df1]=fft_seq(u,ts,df);
U=U/Fs;
[Y,y,df1]=fft_seq(y,ts,df);
Y=Y/Fs;
[U1,ussb,df1]=fft_seq(ussb,ts,df);
U1=U1/Fs;
[L1,lssb,df1]=fft_seq(lssb,ts,df);
L1=L1/Fs;
f_cutoff=150;
n_cutoff=floor(150/df1);
f=[0:df1:df1*(length(m)-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(5,2,1);
plot(t,m(1:length(t)));
title('SSB-AM未调制信号');
subplot(5,2,2);
plot(t,u(1:length(t)));
title('SSB-AM已调制信号');
subplot(5,2,3);
plot(t,dem(1:length(t)));
title('SSB-AM解调信号');
subplot(5,2,4);
plot(f,abs(fftshift(DEM))); %解调信号的频谱
title('SSB-AM解调信号频谱');
subplot(5,2,5);
plot(f,abs(fftshift(M)));
title('SSB-AM未调制信号频谱');
subplot(5,2,6);
plot(f,abs(fftshift(U)));
title('SSB-AM已调制信号频谱');
%%%%
subplot(5,2,7);
plot(t,ussb(1:length(t)));
title('SSB-AM上边带调制信号');
subplot(5,2,8);
plot(t,lssb(1:length(t)));
title('SSB-AM下边带调制信号');
subplot(5,2,9);
plot(f,abs(fftshift(U1)));
title('SSB-AM上边带调制信号频谱');
subplot(5,2,10);
plot(f,abs(fftshift(L1)));
title('SSB-AM下边带调制信号频谱');
效果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c4964a4db80004ca33ca688174568fcb.png)