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),神奇的事情发生了:
| 采样频率 | 实际频率成分 | 观测到的频率成分 |
|---|

916

被折叠的 条评论
为什么被折叠?



