news 2026/4/16 10:42:34

全相位数字滤波器的基本原理与MATLAB仿真分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
全相位数字滤波器的基本原理与MATLAB仿真分析

目录

1.全相位数字滤波器的基本原理

1.1 输入信号的对称延拓

1.2 全相位滤波器的输出

1.3 频率响应

2.全相位数字滤波器的MATLAB仿真


全相位数字滤波器是一类基于“全相位处理思想”的线性时不变滤波器,其输入信号的每个输出点都由该点为中心的全部可用输入数据参与加权求和。这种结构与传统的因果FIR滤波器不同,它通过对数据进行“对称延拓 + 全相位加权”,使滤波器在保持线性相位的同时,获得更优的频域特性,如更高的阻带衰减、更窄的过渡带、更低的旁瓣等。

1.全相位数字滤波器的基本原理

设原始输入序列为x(n),长度为N。传统FIR滤波器的输出为:

这是因果结构,输出只依赖过去的输入。

而全相位滤波器的输出形式为:

其中h(k)为对称的滤波器系数,即h(k)=h(−k)。

其中h(k)为对称的滤波器系数,即h(k)=h(−k)。

从上面的公式可以看到,输出点y(n)由以n为中心的2L+1个输入点共同决定。 滤波器是非因果的,但可以通过对输入信号进行延拓来实现。

这种结构的优点是:

1.线性相位:因为系数对称。

2.频率响应更接近理想低通/高通/带通滤波器。

3.无相位失真,适合音频、图像等对相位敏感的应用。

1.1 输入信号的对称延拓

为了实现非因果的全相位处理,需要对输入信号进行对称延拓。

设原始输入为x(n),n=0,1,…,N−1。

延拓方式通常采用对称延拓:

这样延拓后的信号在边界处连续且光滑,避免了边界效应。

1.2 全相位滤波器的输出

设全相位滤波器的系数为h(k),k=−L,…,L,满足对称性:

则全相位滤波器滤波器的输出为:

1.3 频率响应

对系数h(k)做离散时间傅里叶变换:

由于h(k)对称,频率响应可以写成:

从上面公式可知,这表明:

频率响应是实函数,无相位失真。

幅度响应由余弦项叠加而成,可通过调整h(k)来逼近理想滤波器。

2.全相位数字滤波器的MATLAB仿真

%% 全相位数字滤波器 vs 传统FIR滤波器 对比实验 % 清空环境 clear; clc; close all; rng(123); % 固定随机种子,保证结果可复现 %% ===================== 1. 生成测试信号 ===================== Fs = 2000; % 采样频率 (Hz) t = 0:1/Fs:1-1/Fs; % 时间轴 (1秒) % 合成信号:50Hz(主信号) + 600Hz(噪声) + 随机噪声 x_clean = 2*sin(2*pi*50*t); % 50Hz 基波 x_noise = 5*sin(2*pi*400*t) + 0.2*randn(size(t)); % 200Hz噪声+随机噪声 x = x_clean + x_noise; % 带噪输入信号 %% ===================== 2. 滤波器参数设计 ===================== % 低通滤波器参数(目标:保留50Hz,滤除200Hz) fc =90; % 截止频率 (Hz) omega_c = 2*pi*fc/Fs;% 归一化截止角频率 L = 16; % 全相位滤波器半长度 (总长度=2L+1) M = 2*L + 1; % 传统FIR滤波器长度 (与全相位等长,保证公平对比) %% ===================== 3. 传统FIR滤波器设计与滤波 ===================== % 方法1:窗函数法设计FIR低通滤波器 (汉明窗) h_fir = fir1(M-1, fc/(Fs/2), hamming(M)); % FIR系数 % 滤波(采用线性相位滤波,避免相位失真) y_fir = filtfilt(h_fir, 1, x); % 零相位滤波(前向+反向) %% ===================== 4. 全相位数字滤波器设计与滤波 ===================== % 步骤4.1:设计全相位滤波器系数(基于理想低通+汉明窗) k = -L:L; % 系数索引 % 理想低通滤波器的脉冲响应 h_d = sin(omega_c*k)./(pi*k); h_d(k==0) = omega_c/pi; % 处理k=0时的0/0情况 % 加汉明窗(保证系数对称) win = hamming(2*L+1)'; % 汉明窗 h_ap = h_d .* win; % 全相位滤波器系数 % 步骤4.2:输入信号对称延拓(解决非因果问题) N = length(x); x_ext = zeros(1, N + 2*L); % 延拓后信号 % 1) 中心部分:原始信号 x_ext(L+1:L+N) = x; % 2) 左延拓(对称) for n = 1:L x_ext(L+1 - n) = x(n); end % 3) 右延拓(对称) for n = 1:L x_ext(L+N + n) = x(N - n + 1); end % 步骤4.3:全相位滤波(逐点卷积) y_ap = zeros(1, N); % 全相位滤波输出 for n = 1:N % 取以n为中心的2L+1个延拓数据 x_win = x_ext(n:n+2*L); % 全相位加权求和 y_ap(n) = sum(h_ap .* x_win); end %% ===================== 5. 结果分析与可视化 ===================== % 5.1 时域波形对比 figure('Position', [100, 100, 1000, 800]); subplot(3,1,1); plot(t, x); title('(1) 原始带噪信号'); xlabel('时间 (s)'); ylabel('幅值'); grid on; xlim([0, 0.2]); subplot(3,1,2); plot(t, y_fir); title('(2) 传统FIR滤波结果'); xlabel('时间 (s)'); ylabel('幅值'); grid on; xlim([0, 0.2]); subplot(3,1,3); plot(t, y_ap); title('(3) 全相位滤波结果'); xlabel('时间 (s)'); ylabel('幅值'); grid on; xlim([0, 0.2]); sgtitle('时域波形对比 (仅显示前0.2秒)'); % 5.2 频域响应对比 % 计算幅频响应 [H_fir, f_fir] = freqz(h_fir, 1, 1024, Fs); [H_ap, f_ap] = freqz(h_ap, 1, 1024, Fs); figure('Position', [100, 100, 1000, 400]); % 计算滤波后信号的频谱 X = fft(x); Y_fir = fft(y_fir); Y_ap = fft(y_ap); f = Fs/2 * linspace(0, 1, N/2+1); % 绘制单边频谱 plot(f, 20*log10(abs(X(1:N/2+1))), 'k', 'LineWidth', 1); hold on; plot(f, 20*log10(abs(Y_fir(1:N/2+1))), 'b', 'LineWidth', 1.5); plot(f, 20*log10(abs(Y_ap(1:N/2+1))), 'r--', 'LineWidth', 1.5); title('信号频谱对比'); xlabel('频率 (Hz)'); ylabel('幅度 (dB)'); grid on; legend('原始信号','FIR滤波','全相位滤波'); % 5.3 定量性能指标(信噪比SNR、均方误差MSE) % 计算信噪比 (SNR = 10*log10(干净信号功率/噪声功率)) snr_original = snr(x_clean, x - x_clean); snr_fir = snr(x_clean, y_fir - x_clean); snr_ap = snr(x_clean, y_ap - x_clean); % 计算均方误差 (MSE) mse_fir = mean((y_fir - x_clean).^2); mse_ap = mean((y_ap - x_clean).^2); % 输出性能指标 fprintf('===================== 性能对比 =====================\n'); fprintf('原始信号SNR: %.2f dB\n', snr_original); fprintf('传统FIR滤波SNR: %.2f dB, MSE: %.4f\n', snr_fir, mse_fir); fprintf('全相位滤波SNR: %.2f dB, MSE: %.4f\n', snr_ap, mse_ap); fprintf('====================================================\n');

对比结论如下:
原始信号SNR: -7.94 dB
传统FIR滤波SNR: 9.94 dB, MSE: 0.2030
全相位滤波SNR: 14.50 dB, MSE: 0.0709

原始信号:在200Hz附近有明显的噪声峰值(对应原始信号中的200Hz干扰),同时高频段(>100Hz)的随机噪声也较多。

传统FIR滤波:200Hz的噪声峰值有所降低,但仍有残留;高频段的随机噪声也未完全滤除(蓝色曲线在100Hz以上仍有一定幅度)。

全相位滤波:200Hz的噪声峰值被大幅压制(红色虚线在200Hz附近几乎接近0dB),高频段的随机噪声也被滤除得更干净,仅保留了50Hz的有效信号——说明全相位滤波器的阻带衰减更高、过渡带更窄,频域特性更接近理想低通滤波器。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 18:38:44

DevOps与SRE概念理解

DevOps与SRE概念理解 DevOps 和 SRE(Site Reliability Engineering)是现代软件工程中保障高效交付与系统稳定性的两大核心方法论,二者目标高度一致但侧重点不同,在生产环境中常常协同落地。 一、基础认知:什么是DevOps…

作者头像 李华
网站建设 2026/4/16 13:53:59

全网最全9个AI论文网站,专科生毕业论文轻松搞定!

全网最全9个AI论文网站,专科生毕业论文轻松搞定! AI 工具如何助力论文写作,让专科生轻松应对毕业挑战 在当前的学术环境中,越来越多的专科生开始借助 AI 工具来提升论文写作效率。尤其是那些对写作技巧不熟悉、时间紧张的学生来说…

作者头像 李华
网站建设 2026/4/16 14:04:17

大模型产品经理完整学习路线,从零基础到实战全覆盖,附免费学习资源_2026最新

文章详细介绍了大模型产品经理的五个阶段学习路径:基础知识、大模型技术、产品管理、实战经验和持续提升。内容涵盖计算机科学、人工智能基础、大模型技术概览、产品思维培养及实战项目经验。同时提供了丰富的学习资源,包括学习路线图、视频教程、技术文…

作者头像 李华
网站建设 2026/4/13 21:11:17

西门子PLC实现冷热水恒压供水系统开发之旅

西门子Siemens PLc程序,TiA博途V15.1 V16 V17版冷热水恒压供水系统,变频器控制,模拟量输入和输出处理,温度控制,流量计算控制,配方控制,LAd和ScL语言 在自动化控制领域,西门子的PLC配…

作者头像 李华
网站建设 2026/4/12 4:25:45

直流电机双闭环调速系统这玩意儿,搞过电机控制的都知道它有多实用。今天咱们直接上手拆解一个已经调好的Simulink模型,手把手看看怎么让电机转速稳如老狗

直流电机双闭环调速系统仿真模型 转速电流双闭环调速系统Matlab/Simulink仿真模型。 内外环均采用PI调节器,本模型具体直流电机模块、三相电源、同步6脉冲触发器、双闭环、负载、示波器模块搭建。 所有参数都已经调试好了,仿真波形完美,可以直…

作者头像 李华