matlab数字信号处理滤波器

调用上面的两个函数进行高通、低通、带通以及带阻滤波器的实现,已经将dft和idft的程序写完了

img

img

我可以使用内置函数fftifft来实现这些滤波器。对于高通滤波器和低通滤波器,我可以将信号进行傅里叶变换,然后将不需要的频率成分设置为零,最后再进行逆傅里叶变换。对于带通和带阻滤波器,我可以先进行傅里叶变换,然后设置不需要的频率成分为零,再进行逆傅里叶变换。

以下是一个示例代码,展示如何实现低通滤波器:

% 定义输入信号
Fs = 1000; % 采样频率
T = 1/Fs; % 采样间隔
L = 1000; % 信号长度
t = (0:L-1)*T; % 时间向量
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); % 输入信号

% 进行傅里叶变换
X = fft(x);

% 设置高频成分为零
X(50:end-50) = 0;

% 进行逆傅里叶变换
y = ifft(X);

% 绘制结果
subplot(2,1,1);
plot(Fs*t(1:200),x(1:200));
title('原始信号');
xlabel('时间(ms)');
ylabel('幅值');
subplot(2,1,2);
plot(Fs*t(1:200),y(1:200));
title('滤波后的信号');
xlabel('时间(ms)');
ylabel('幅值');

同样的方法可以应用于其他类型的滤波器。