FM的调制matlab仿真

一、FM调制

image

1、代码如下:

clc,clear;

fm = 500; % 调制信号频率(Hz)
Am = 0.5; % 调制信号幅度
fc = 5e3; % 载波频率(Hz)
Ac = 1; % 载波幅度
mf = 5; % 调频指数


%%
%firstly
kf = mf * 2 * pi * fm / Am
diatf = kf * Am
B = 2 * (mf + 1) * fm

%%
%secondly
fs = 64e3; % 采样率
N = 3000; % 样点总数
t = (0:N-1)'/fs; % 时间t

%绘制时域波形
m_t = Am*sin(2*pi*fm*t); % 调制信号
phi_t = kf*cumsum(m_t)/fs; % 相位积分
s_t = cos(2*pi*fc*t + phi_t); % 已调信号\
figure(1)
subplot(1,3,1)
plot(t, s_t , 'b'); % 绘波形
xlabel('time');
ylabel('amplitude');
title('时域波形');

%绘制功率谱
L = length(s_t);               % 取得序列长度
u = fftshift(fft(s_t ));       % 离散傅里叶变换,求频谱
u_pow = pow2db(abs(u).^2);     % 幅度转为dB
w = (0:L-1)'*fs/L - 1/2*fs;    % 横坐标-频率

subplot(1,3,2);
plot(w, u_pow);
grid on;
xlabel('frequency(Hz)');
ylabel('magnitude(dB)');
title('功率谱');




%%
%fortly

[lpf_b,lpf_a] = butter(3, (fc/5)/(fs/2)); % 设计低通滤波器
t = (0:N-1)'/fs; % 时间t
r_t = s_t;
subplot(1,3,3)
r_d_t = [0;diff(r_t)]; % 求微分
r_e_t = abs(r_d_t); % 包络检波
demod_t = filter(lpf_b, lpf_a, r_e_t); % 滤波
plot(t, demod_t , 'b'); % 绘图
title('解调波形');


%%
%thirdly
fs_J=100e3;
t=(0:N-1)';
N_J=3000000;
t_J=(0:N_J-1)';
 
sm=Am*cos(2*pi*fm/fs*t);
sfm_J=Ac*cos(2*pi*fc/fs_J*t_J+mf*sin(2*pi*fm/fs_J*t_J));

Sfm=fft(sfm_J);
figure;
plot(abs(Sfm));
 
i=0:9
J=besselj(i,mf);
J_comp=abs(J/J(1))

 

2、结果分析

image

image

 

在进行功率谱分析的时候,可以将采样点增大,而绘图的采样点不变,这样子得到的功率谱会更加离散,便于和贝塞尔函数进行比较。

 

二、L+R音频调制

image

1、流程设计

image

2、代码如下

clear all;clc;

%载入信号
load('fm_cap.mat');
fm_cap = resample(fm_cap,1,4);  %降低采样率

fs = 500e3;                % 采样率
N = length(fm_cap);        % 样点数
t = (0:N-1)'/fs;           % 时间t

r_d_t = [0;diff(fm_cap)];  % 求微分
r_e_t = abs(hilbert(r_d_t));
r_e_t = r_e_t - sum(r_e_t)/N;


plot(t, r_e_t , 'b');      % 绘图
[lpf_b,lpf_a] = butter(5, 10e3/(fs/2)); % 设计低通滤波器
demod_t = filter(lpf_b, lpf_a, r_e_t); % 滤波

demod_t = resample(demod_t,16,125);
demod_t = demod_t ./ max(demod_t);
sound(demod_t,64e3);

 

FM调制代码2:

角调制:Sm(t)=Acos[wct+Ψ(t)]
PM:Ψ(t)=Kpm(t)
Spm(t)=Acos[wct+ Kpm(t) ]
FM(调频):Ψ(t)对t的导数=Kfm(t)
Sfm(t)=Acos[wct+ kf∫m(t)dt ]
代码实现:
figure(1);
dt=0.0004; %设定时间步长?
t=0:dt:1.5; %产生时间向量?
am=15; %设定调制信号幅度?
fm=5; %设定调制信号频?
mt=amcos(2pifmt); %生成调制信号?
fc=50; %设定载波频率?
ct=cos(2pifct); %生成载波?
kf=10; %设定调频指数?
vt=cos(2pifct+1015sin(2pifmt)/(2pi*fm)); %调制,产生已调信号?
subplot(3,1,1);
plot(mt);
axis([0,1500,-20,20]);
title(‘调制信号的时域图’);
subplot(3,1,2);
plot(ct);
axis([0,1500,-1,1]);
title(‘载波信号的时域图’);
subplot(3,1,3);
plot(vt);
axis([0,1500,-1.2,1.2]);
title(‘已调信号的时域图’);
仿真结果:


在这里插入图片描述

 

 

  • 6
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值