📄 fm_prim.asv
字号:
% 模拟调制系统(调频):
% 设输入信号为m(t)=cos2πt,载波中心频率fc=10kHz,调频器的压控振荡系数为5Hz/V,载波平均功率为1W。
%(1) 画出该调频信号的波形;
%(2) 求出该调频信号的振荡谱;
%(3) 用鉴频器解调该调频信号,并与输入信号比较。
global dt df N t f T Bs %全局变量
close all
kf=5;%压控振荡系数
A=sqrt(2);
fm=1;
fc=10000;
N=2^11; %采样点数
dt=0.001; %时域采样间隔
df=1/(N*dt); %频域采样间隔
T=N*dt; %截短时间
Bs=N*df/2; %系统带宽
t=linspace(-T/2,T/2,N);%定义长度为N的向量
f=linspace(-Bs,Bs,N); %定义长度为N的向量
%取样点数=2^11
%m=A*cos(2*pi*fm*t);
m=2*pi*t;
int_m(1)=0;%积分
for g=1:length(t)-1
int_m(g+1)=int_m(g)+m(g)*dt;
end
%int_m=1/2/pi/fm*sin(2*pi*fm*t);
s=cos(2*pi*fc*t+2*pi*kf*int_m);
S=t2f(s);%fft
a=f2t(S);%ifft
as=abs(S);
%diff_s(1)=0 %经过鉴频器的输出
%for i=1:length(t)-1
% diff_s(i+1)=(s(i+1)-s(i))/dt;
%end
t1=[0:dt:dt*(length(u)-1)];
z=hilbert(s); %希尔伯特变换
yq =z.*exp(-j*2*pi*fc*t);
dem =diff(unwrap(angle(yq))/dt)/(2*pi*kf);
%unwrap函数用于恢复相位并去掉2π相位叠加的影响
for i=1:(length(t)-1)/2
dem(i)=-dem(i);
end
figure(1)
subplot(2,1,1);
hold on;
plot(t,a);%经FM调制后的s(t)
plot(t,m,'r');
axis([-1.5,1.5,min(min(a),min(m)),max(max(a),max(m))]);
grid on;
title( '');
xlabel(('调制信号m(t)波形及经FM调制后的s(t)波形 t(s)'));
ylabel('s(t)(V)');
subplot(2,1,2);
plot(f,as);%s(f)振荡谱
axis([-Bs/10,Bs/10,min(as),max(as)]);
grid on;%给图形窗口打格线
%title('');
xlabel('调频信号的振荡谱 f(HZ)');
ylabel('S(f)(V/HZ)');
figure(2)
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 + -