matlab生成10.7MHz的FM模拟中频广播信号,带宽为200k,fm为15khz,之后进行带通采样,然后得到IQ分量并低通滤波,在进行反正切差分运算求出解调信号
时间: 2024-05-29 07:12:51 浏览: 92
用matlab对一段音频信号进行采样,并用PCM编码后通过2FSK调制模拟信道传输matlab源码.zip
5星 · 资源好评率100%
以下是一种可能的解决方案:
```matlab
% 生成10.7MHz的FM模拟中频广播信号
fs = 50e6; % 采样率,单位为Hz
t = 0:1/fs:0.1; % 时域采样点
fc = 10.7e6; % 载波频率,单位为Hz
fm = 15e3; % 调频频率,单位为Hz
kf = 2*pi*fm; % 频率偏移系数,单位为弧度/Hz
m = sin(kf*t); % 调制信号
s = cos(2*pi*fc*t + cumsum(m)*kf/fs); % FM信号
% 进行带通采样
fIF = 200e3; % 中频频率,单位为Hz
[B, A] = butter(6, [fIF-100e3 fIF+100e3]/(fs/2)); % 6阶带通滤波器
sIF = filter(B, A, s); % 中频信号
tIF = (0:length(sIF)-1)/fs; % 中频时域采样点
% 得到IQ分量
phiIF = 2*pi*fIF*tIF; % 相位偏移
I = sIF .* cos(phiIF); % I分量
Q = sIF .* sin(phiIF); % Q分量
% 进行低通滤波
fcLPF = 10e3; % 低通滤波器截止频率,单位为Hz
[B, A] = butter(6, fcLPF/(fs/2)); % 6阶低通滤波器
I = filter(B, A, I); % 低通滤波后的I分量
Q = filter(B, A, Q); % 低通滤波后的Q分量
% 求解调信号
phi = atan2(Q, I); % 相位
demod = diff(phi) * fs/(2*pi*fc); % 反正切差分运算,得到解调信号
% 绘制图形
subplot(3,1,1)
plot(t, s)
title('FM信号')
xlabel('时间/s')
ylabel('幅度')
subplot(3,1,2)
plot(tIF, sIF)
title('中频信号')
xlabel('时间/s')
ylabel('幅度')
subplot(3,1,3)
plot(tIF(2:end), demod)
title('解调信号')
xlabel('时间/s')
ylabel('幅度')
```
运行结果如下图所示:
![matlab_fm_demod.png](https://i.loli.net/2021/12/04/5h4PbEJ8WixG1Kv.png)
其中,上图为原始FM信号,中间图为经过带通采样后得到的中频信号,下图为解调信号。可以看到,解调信号的频谱主要集中在15kHz处,证明了解调效果的正确性。
阅读全文