matlab生成10.7MHz的中频FM模拟信号,之后进行带通采样,然后得到IQ分量并低通滤波,在进行反正切差分运算求出解调信号
时间: 2024-05-27 18:13:39 浏览: 67
matlab程序,可实现脉冲编码调制,模拟信号的数字传输:抽样、量化、编码
5星 · 资源好评率100%
以下是一个简单的 Matlab 代码实现:
% 定义变量
fs = 100e6; % 采样率
fc = 10.7e6; % 中心频率
fdev = 75e3; % 频偏
t = 0:1/fs:1e-3-1/fs;
% 生成调制信号
x = sin(2*pi*fc*t + 2*pi*fdev*cumsum(randn(size(t))));
% 带通采样
f1 = fc - fdev;
f2 = fc + fdev;
bw = f2 - f1;
fn = fs/2;
n = floor(fn/bw);
h = fir1(n, [f1, f2]/fn);
y = filter(h, 1, x(1:n:end));
% 得到 IQ 分量
fc_norm = fc/fn;
i = y .* cos(2*pi*fc_norm*(0:length(y)-1));
q = y .* sin(2*pi*fc_norm*(0:length(y)-1));
% 低通滤波
lpf_cutoff = 20e3;
lpf_order = 4;
lpf = fir1(lpf_order, lpf_cutoff/fn, 'low');
i_filt = filter(lpf, 1, i);
q_filt = filter(lpf, 1, q);
% 反正切差分运算
demod = diff(atan2(q_filt(2:end), i_filt(2:end)));
% 绘制结果
figure;
subplot(211);
plot(t, x);
title('调制信号');
subplot(212);
plot((0:length(demod)-1)/fs, demod);
title('解调信号');
阅读全文