模拟FM调制解调matlab仿真

       FM的调制解调相对AM复杂一些,网上也更多的是介绍AM解调,FM解调相对少很多,而且也很少FM的解调代码,但是在网上找到一个可以用,做了一点修改发现效果还不错,记录下来

调制信号生成:

clear;
clf;
close all
Fs=800e3;
fz=80e3;
fj=1e3;
i=4096;
A=1;
Kf=0.2;             
t=(1:i)/Fs;         
tf=(1:i-1)/Fs;      
f=((1:i)-1)*Fs/i;   
tz=1;               

Mod_Sig_c=A*cos(2*pi*fj*t);
%画图基带信号
subplot(311);plot(t,Mod_Sig_c);title('基带信号');xlabel('时间(S)');ylabel('幅度(V)');grid on;legend('基带');

Carrier_c=cos(2*pi*fz/Fs*(1:i));%载波cos
%画载波
subplot(312);plot(t(1:300),Carrier_c(1:300));title('载波信号');xlabel('时间(S)');ylabel('幅度(V)');grid on;legend('载波');

int_m(1)=0;      %对m_fun积分
for p=1:length(1:i)-1
    int_m(p+1)=int_m(p)+Mod_Sig_c(p)*tz;
end

SFm_c=A*cos(2*pi*fz/Fs*(1:i)+int_m*Kf);
SFm   =   SFm_c;
% SFm=awgn(SFm_c,0.00000022);
%画调制信号
subplot(313);plot(t,SFm);title('调制信号');xlabel('时间(S)');ylabel('幅度(V)');grid on;legend('调制信号');
ff_SFm=fft(SFm);
ff_SFm_abs=abs(ff_SFm);
ff_SFm_range=ff_SFm_abs/(i/2);   
ff_SFm_range(1)=ff_SFm_abs(1)/i;
figure;plot(f(1:i/2),ff_SFm_range(1:i/2));title('FM的频谱');xlabel('频率(Hz)');ylabel('幅度(V)');grid on;legend('FM的频谱');

基带信号和调制信号的波形如下所示:

模拟FM调制解调matlab仿真_第1张图片

频谱如下所示:

模拟FM调制解调matlab仿真_第2张图片

解调采用的方法:

先对调制信号进行正交变换,然后对IQ经过低通滤波器。

模拟FM调制解调matlab仿真_第3张图片

低通滤波器设置如下所示:

模拟FM调制解调matlab仿真_第4张图片

最后对滤波后的IQ如下处理:

                            

解调结果如下所示:

模拟FM调制解调matlab仿真_第5张图片

完整的调制解调代码下面链接:

https://download.csdn.net/download/weixin_39813867/12871409

你可能感兴趣的:(Matlab,matlab)