FM
[toc]
理论
角度调制信号表示为:
$$s(t) = A_c ocs[2 \pi f_c t + \varphi(t)] = A_c cos\theta(t)$$
$\theta(t)$ 瞬时相位
$\varphi(t)$ 瞬时相位偏移
$\cfrac{1}{2 \pi} \cfrac{d\theta(t)}{dt}$ 瞬时频率
$\cfrac{1}{2 \pi} \cfrac{d\varphi(t)}{dt}$ 瞬时频率偏移
FM 频率调制 theory
调频:正弦载波的幅度不变,瞬时频率偏移随着基带信号成线性变化,即:
$$\cfrac{1}{2 \pi} \cfrac{d\varphi(t)}{dt} = K_F m(t)$$
所以
$$\varphi(t) = 2 \pi K_F \int_{-\infty}^{t}m(\tau)d\tau= 2 \pi K_F \int_{0}^{t}m(\tau)d\tau + \varphi_0$$
其中,$K_F (单位 Hz/V)$ 频率偏移常数,调频灵敏度一般 $\varphi_0 = 0$
所以,调频信号的表达式:
$$s_{FM}(t) = A_ccos[2 \pi f_c t + 2 \pi K_F \int_{0}^{t}m(\tau)d\tau]$$
角度调制信号的频带宽度(卡森公式):$B \approx 2 (D + 1) f_H =2 (\Delta f_{max} + f_H ) $
- 频偏比 $D$ 和调频指数 $\beta_{FM}$ 作用一样
角度调制信号的平均功率:$S_i = \cfrac{A_c^2}{2}$
输入噪声功率:$P_{n_i} = N_0 B_{FM}$
输入信噪比:$SNR_i = \cfrac{S_i}{P_{n_i}} = \cfrac{\frac{A_c^2}{2}}{N_0 B_{FM}} = 10 log_{10}\cfrac{S}{N} (dB)$
调频信号的产生
- 直接调频
- 间接调频(倍频法)
FM 频率解调 theory
- 非相干解调(包络检波)
首先,对 FM 已调信号求微分:
$$s_d(t) = \cfrac{s_{FM}(t)}{dt} = -A_c ( 2 \pi f_c + K_F m(t)) sin[2\pi f_c t + \int_0^t K_f m(\tau) d\tau]$$
(在 AM 信号调制与解调中,如果出现以上类似的表达式 $A(t) cos(\omega_0 t + \theta(t))$,那么就可以使用包络检波解调。)
然后,对 $s_d(t)$ 求解析信号(希尔伯特变换)并取绝对值(获得包络)即可得到解调信号。
- 相干解调(同步检波)
(略,见本文最后的参考)
代码
FM 频率调制 code
- 无噪声理想条件下,FM 频率调制:
这里需要注意的是:我们可以直接手动计算出 $\int_{0}^{t}m(\tau)d\tau = \int_{0}^{t}cos(2 \pi f_m \tau)d\tau = \frac{1}{2 \pi f_m} sin(2 \pi f_m t)$,然后直接带入 $t$ 即可。
但是实际上,因为我们需要解调出基带信号 $m(t)$,也就是说我们不知道基带信号 $m(t)$ 的波形,所以上面这个方法在实际中是行不通的。正解应该是:我们需要自己写一个定积分的函数,其思想就是微元法逼近 $\int_{0}^{t}m(\tau)d\tau$ 的结果。
以下,给出两种方法:①手动计算②微元法计算
clc, clear, clf;
T = 1;
dt = 0.0005;
t = 0: dt: T - dt;
A = 1;
fm = 4;
wm = 2 * pi * fm;
mt = A * cos(wm * t); % 调制信号
fc = 40;
wc = 2 * pi * fc;
ct = cos(wc * t); % 载波信号
A_c = 1;
K_F = 20;
sFM = A_c * cos(wc * t + 2 * pi * K_F * A / wm * sin(wm * t)); % 方法①:已调信号
% sFM = A_c * cos(wc * t + 2 * pi * K_F * cumsum(mt) * dt); % 方法②:已调信号
figure(1);
subplot(321);
plot(t, mt);
xlabel('t(s)');
title('调制信号时域图');
subplot(322);
[f, sfm] = T2F(t, mt);
plot(f, abs(sfm));
xlabel('f/Hz');
xlim([-50, 50]);
title('调制信号频谱');
subplot(323);
plot(t, ct);
xlabel('t(s)');
title('载波信号时域图');
subplot(324);
[f, sfc] = T2F(t, ct);
plot(f, abs(sfc));
xlabel('f/Hz');
xlim([-100, 100]);
title('载波信号频谱');
subplot(325);
plot(t, sFM);
xlabel('t(s)');
title('已调信号时域图');
subplot(326);
[f, sfFM] = T2F(t, sFM);
plot(f, abs(sfFM));
xlabel('f/Hz');
xlim([-100, 100]);
title('FM 已调信号频谱');
FM 频率解调 code
- 非相干解调(包络检波)
figure;
subplot(221);
plot(mt);
title('调制信号');
subplot(222);
plot(ct);
title('载波信号');
subplot(223);
plot(sFM);
title('已调信号');
sdt = [0 diff(sFM)]; % 对已调信号做微分
rt = abs(hilbert(sdt)); % 构造解析信号求包络,得到非相干解调信号
subplot(224);
plot(rt);
title('解调信号');
其他
- 不同信噪比下的 FM 已调信号
分析:
根据上面信号和噪声的功率以及信噪比,得:噪声功率 $\sigma^2 = N_0 B_{FM} = \cfrac{S}{10^{\frac{SNR_i}{10}}} = \cfrac{A^2}{2 \cdot 10^{\frac{SNR_i}{10}}}$
所以rand(1, n)
产生 n 个服从高斯分布得随机数,均值为 $m=0$,方差 $\sigma^2=1$,要产生符合一定信噪比得噪声,只需要 $\sigma ~ \cdot$rand(1, n)
,其中标准差 $\sigma$ 根据上式中的方差(也即噪声功率)$\sigma^2$计算即可。
clc, clear, clf;
dt = 0.00001;
T = 0.004
t = 0: dt: T - dt;
figure;
A = 5;
fm = 1000;
wm = 2 * pi * fm;
mt = A * cos(wm * t); % 调制信号
subplot(311);
plot(t, mt);
title('调制信号时域波形图');
fc = 10000;
wc = 2 * pi * fc;
ct = cos(wc * t); % 载波信号
K_F = 10;
sFM = A_c * cos(wc * t + K_F * cumsum(mt) * dt); % FM 已调信号
SNR = 40;
sigma = sqrt(A^2 / (2 * 10^(SNR / 10)));
noise = sigma * rand(1, length(mt));
rt1 = sFM + noise;
subplot(312);
plot(t, rt1);
title('含信噪比下,FM 已调信号时域波形图');