FIR滤波器,即有限脉冲响应滤波器(Finite Impulse Response Filter),是数字信号处理中的一种滤波器。它的特点在于,滤波器的单位冲激响应是有限长度的,这意味着当给定一个输入信号后,输出信号只会在有限的时间内受到影响,因此FIR滤波器总是稳定的。
汉宁窗(Hanning Window)是一种常用的窗函数,用于FIR滤波器的设计。窗函数在滤波器设计中的主要作用是调整滤波器的频率响应,以满足特定的设计要求。汉宁窗的特点是其在时域上的形状,它可以帮助减少频谱泄漏,从而改善滤波器的性能。

clc;close all;clear all;warning off;%清除变量
rand('seed', 500);
randn('seed', 300);
format long g;


% FIR滤波器设计参数
fs = 1000;        % 采样频率
fc = 50;          % 截止频率
filter_order = 50; % 滤波器阶数

% 使用汉宁窗设计FIR低通滤波器
window = hann(filter_order+1); % 创建汉宁窗
b = fir1(filter_order, fc/(fs/2), 'low', window); % 设计FIR滤波器

% 绘制滤波器的频率响应
figure;
freqz(b, 1, 1024, fs);
title('FIR 滤波器响应(汉宁窗)');

% 使用此滤波器对信号进行滤波
% 创建一个测试信号,包含50Hz和200Hz的成分
t = 0:1/fs:1-1/fs;  % 时间向量
x = sin(2*pi*50*t) + 0.5*sin(2*pi*200*t);  % 合成信号

% 应用FIR滤波器进行滤波
y = filter(b, 1, x);  % 对信号x进行滤波

% 绘制原始信号和滤波后的信号
figure;
subplot(2,1,1);
plot(t, x);
grid on;
xlabel('时间 (s)');
ylabel('振幅');
title('原始信号');

subplot(2,1,2);
plot(t, y);
grid on;
xlabel('时间 (s)');
ylabel('振幅');
title('滤波后信号');


FIR滤波器(汉宁窗设计)的MATLAB代码-LMLPHP

FIR滤波器(汉宁窗设计)的MATLAB代码-LMLPHP

04-10 20:04