📄 fm.m
字号:
close all
t0=8; %信号的持续时间,用来定义时间轴的取值范围
ts=0.0001; %抽样间隔
fs=1/ts; %抽样频率
fc=10000; %载波频率
t=[-t0/2:ts:t0/2]; %时间轴的取值
kf=5; %压控振荡系数
df=0.25; %所需的频率分辨率,用在求傅里叶变换时,它表示FFT的最小频率间隔
m=2*pi*t; %调制信号
%*********************************************************************
jifen(1)=0; %求信号m(t)的积分
for i=1:length(t)-1
jifen(i+1)=jifen(i)+m(i)*ts;
end
%*********************************************************************
[M,m,df1]=fourier(m,ts,df); %对调制信号m(t)求傅里叶变换,需调用子函数fourier
M=M/fs; %缩放,便于在频谱图上整体观察
f=[1:length(m)]-fs/2; %时间轴上对应的频率向量
u=1.414*cos(2*pi*fc*t+2*pi*kf*jifen); %调制后的信号
[U,u,df1]=fourier(u,ts,df); %对调制后的信号u(t)求傅里叶变换
U=U/fs; %缩放
%*********************************************************************
t1=[0:ts:ts*(length(u)-1)]; %对已调信号进行解调
z=hilbert(u); %希尔伯特变换
yq =z.*exp(-j*2*pi*fc*t1);
dem =diff(unwrap(angle(yq))*fs)/(2*pi*kf);
%unwrap函数用于恢复相位并去掉2π相位叠加的影响
for i=1:(length(t)-1)/2
dem(i)=-dem(i);
end
%*********************************************************************
figure(1)
subplot(2,1,1)
plot(t,m(1:length(t))) %此时的m信号是重新构建的信号,
%因为在对m求傅里叶变换时m=[m,zeros(1,n-n2)]
xlabel('时间t')
title('调制信号的时域波形')
subplot(2,1,2)
plot(t,u(1:length(t)))
axis([-1.5,1.5,-1.5,1.5]);
xlabel('时间t')
title('已调信号的时域波形')
figure(2)
subplot(2,1,1)
plot(f,abs(fftshift(M))) %fftshift:将FFT中的DC分量移到频谱中心
axis([58000,63000,0,2]);
xlabel('频率f')
title('调制信号的频谱图')
subplot(2,1,2)
plot(f,abs(fftshift(U)))
axis([58000,63000,0,0.5]);
xlabel('频率f')
title('已调信号的频谱图')
figure(3)
subplot(2,1,1)
plot(t,m(1:length(t)))
xlabel('时间t')
title('调制信号的时域波形')
subplot(2,1,2)
plot(t,dem(1:length(t)))
axis([-t0/2,t0/2,-t0*5,t0*5]);
xlabel('时间t')
title('解调信号的时域波形')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -