MATLAB仿真实战:5分钟搞懂ADC频谱混叠与抗混叠设计

MATLAB仿真实战:5分钟搞懂ADC频谱混叠与抗混叠设计

在数字信号处理的世界里,ADC(模数转换器)扮演着将连续模拟信号转换为离散数字信号的关键角色。但在这个过程中,一个名为"频谱混叠"的现象常常让工程师们头疼不已——它就像一面哈哈镜,会让高频信号"伪装"成低频信号,导致采集到的数据严重失真。今天,我们就用MATLAB这把"数字显微镜",带你直观透视混叠现象的本质,并掌握抗混叠滤波器的设计精髓。

1. 混叠现象:当信号玩起了"变装游戏"

想象一下,你正在用手机拍摄旋转的电风扇。当风扇转速达到某一临界值时,叶片看起来会反向旋转——这正是视觉上的"混叠效应"。在信号采样中,类似的戏法每天都在上演。

混叠的数学本质源于采样定理的违背。根据奈奎斯特定理,采样频率fs必须至少是被采样信号最高频率fh的两倍(fs≥2fh),否则高频成分就会"伪装"成低频信号。让我们用MATLAB生成两个正弦波叠加的信号来演示这一现象:

fs = 100;           % 采样频率100Hz
t = 0:1/fs:1-1/fs;  % 时间向量

% 生成两个正弦波
f1 = 20; A1 = 5;    % 20Hz,幅值5
f2 = 50; A2 = 2;    % 50Hz,幅值2
s1 = A1*sin(2*pi*f1*t);
s2 = A2*sin(2*pi*f2*t);
s = s1 + s2;        % 合成信号

% 绘制时域波形
figure;
subplot(3,1,1); plot(t,s1); title('20Hz正弦波');
subplot(3,1,2); plot(t,s2); title('50Hz正弦波'); 
subplot(3,1,3); plot(t,s);  title('合成信号');
xlabel('时间(s)');

运行这段代码,你会看到两个干净的正弦波叠加结果。但当我们分析其频谱时,问题就出现了:

% 计算FFT
N = length(s);
f = (-N/2:N/2-1)*(fs/N);  % 频率轴
S = fftshift(abs(fft(s))); % 计算频谱

% 绘制频谱
figure;
stem(f,S,'filled');
xlabel('频率(Hz)'); ylabel('幅值');
title('合成信号的频谱');
xlim([-fs/2 fs/2]);
grid on;

此时频谱图上会清晰地显示20Hz和50Hz两个峰。但如果我们降低采样频率到30Hz(低于奈奎斯特频率2×50Hz=100Hz),神奇的事情发生了:

采样频率 实际频率成分 观测到的频率成分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值