matlab 傅里叶变换带通滤波代码
时间: 2024-12-17 07:06:55 浏览: 1
在MATLAB中,傅立叶变换常用于信号处理中的滤波操作,特别是带通滤波。以下是一个简单的例子,展示如何使用`fft`函数和`ifft`函数(快速傅立叶变换和逆变换)来实现低通到高通再到带通的滤波:
```matlab
% 定义原始信号(假设为正弦信号)
fs = 1000; % 采样频率
t = 0:1/fs:1 - 1/fs; % 时间向量
x = sin(2*pi*50*t); % 50Hz正弦信号
% 进行傅立叶变换
X = fft(x);
% 设定带宽范围和截止频率
f_passband = [100 200]; % 例如,希望保留100Hz到200Hz的频率范围
f_cutoff = [75 225]; % 边缘频率(带通范围外)
% 计算滤波窗,仅保留感兴趣区域
window = ones(size(X));
window(frequency < f_cutoff(1) | frequency > f_cutoff(2)) = 0;
window = window .* (frequency >= f_passband(1) & frequency <= f_passband(2));
% 实现带通滤波
filtered_X = X .* window;
% 逆傅立叶变换回时间域
filtered_x = ifft(filtered_X);
% 可视化原信号和滤波后的信号
subplot(2,1,1);
plot(t, x, 'b', t, filtered_x, 'r');
xlabel('Time (s)');
ylabel('Amplitude');
legend('Original Signal', 'Filtered Signal');
阅读全文