当前位置: 首页 > news >正文

微建站平台上传WordPress之后

微建站平台,上传WordPress之后,依兰县建设局网站,厦门海沧区建设局网站FIR多项滤波器的数学原理详解#xff1a;从多相分解到高效实现 文章目录 FIR多项滤波器的数学原理详解#xff1a;从多相分解到高效实现引言一、FIR滤波器基础与多相分解原理1.1 FIR滤波器数学模型1.2 多相分解的数学推导1.3 多相分解的物理意义 二、插值应用中的数学原理2.1…FIR多项滤波器的数学原理详解从多相分解到高效实现 文章目录 FIR多项滤波器的数学原理详解从多相分解到高效实现引言一、FIR滤波器基础与多相分解原理1.1 FIR滤波器数学模型1.2 多相分解的数学推导1.3 多相分解的物理意义 二、插值应用中的数学原理2.1 传统插值流程2.2 多相插值的等效变换 三、抽取应用中的数学原理3.1 传统抽取流程3.2 多相抽取的等效变换 四、Python仿真实验4.1 实验设计4.2 完整代码(代码还有问题博主正在调试持续修正)4.3 实验结果分析 五、工程实现要点5.1 高效实现技巧5.2 设计误差分析 结论 引言 在数字信号处理中FIR有限脉冲响应多项滤波器是实现高效采样率转换的核心技术。它通过多相分解Polyphase Decomposition将单一滤波器拆分为并行的子滤波器组显著降低计算复杂度。本文将深入剖析其数学原理涵盖多相分解的完整推导、插值与抽取的等效变换并提供Python仿真验证。所有公式均采用标准DSP符号体系关键推导步骤保留中间过程。 一、FIR滤波器基础与多相分解原理 1.1 FIR滤波器数学模型 N阶FIR滤波器的差分方程和传递函数为 y [ n ] ∑ k 0 N h [ k ] x [ n − k ] H ( z ) ∑ k 0 N h [ k ] z − k \begin{align*} y[n] \sum_{k0}^{N} h[k] x[n-k] \\ H(z) \sum_{k0}^{N} h[k] z^{-k} \end{align*} y[n]H(z)​k0∑N​h[k]x[n−k]k0∑N​h[k]z−k​ 其中 h [ k ] h[k] h[k] 是滤波器系数 x [ n ] x[n] x[n] 为输入 y [ n ] y[n] y[n] 为输出。 1.2 多相分解的数学推导 目标将 H ( z ) H(z) H(z) 分解为 L L L 个并行的子滤波器 L L L 为插值因子或抽取因子。 分解过程 系数重组将滤波器系数按相位分组 e m [ k ] h [ m k L ] for m 0 , 1 , … , L − 1 ; k 0 , 1 , … , ⌊ N / L ⌋ e_m[k] h[m kL] \quad \text{for} \quad m0,1,\dots,L-1; \ k0,1,\dots,\lfloor N/L \rfloor em​[k]h[mkL]form0,1,…,L−1; k0,1,…,⌊N/L⌋ 其中 e m [ k ] e_m[k] em​[k] 是第 m m m 个多相分量的系数。 Z域表达式每个多相分量的传递函数为 E m ( z ) ∑ k e m [ k ] z − k E_m(z) \sum_{k} e_m[k] z^{-k} Em​(z)k∑​em​[k]z−k 重构原滤波器通过相位偏移组合子滤波器 H ( z ) ∑ m 0 L − 1 z − m E m ( z L ) H(z) \sum_{m0}^{L-1} z^{-m} E_m(z^L) H(z)m0∑L−1​z−mEm​(zL) 推导 H ( z ) ∑ n 0 N h [ n ] z − n ∑ m 0 L − 1 ∑ k 0 K h [ m k L ] z − ( m k L ) ( K ⌊ N / L ⌋ ) ∑ m 0 L − 1 z − m ( ∑ k 0 K h [ m k L ] ( z L ) − k ) ∑ m 0 L − 1 z − m E m ( z L ) \begin{align*} H(z) \sum_{n0}^{N} h[n] z^{-n} \\ \sum_{m0}^{L-1} \sum_{k0}^{K} h[m kL] z^{-(m kL)} \quad (K\lfloor N/L \rfloor) \\ \sum_{m0}^{L-1} z^{-m} \left( \sum_{k0}^{K} h[m kL] (z^L)^{-k} \right) \\ \sum_{m0}^{L-1} z^{-m} E_m(z^L) \end{align*} H(z)​n0∑N​h[n]z−nm0∑L−1​k0∑K​h[mkL]z−(mkL)(K⌊N/L⌋)m0∑L−1​z−m(k0∑K​h[mkL](zL)−k)m0∑L−1​z−mEm​(zL)​ 1.3 多相分解的物理意义 并行化将串行滤波计算拆分为 L L L 个并行的子滤波器计算优化复杂度从 O ( N ) O(N) O(N) 降至 O ( N / L ) O(N/L) O(N/L)相位对齐每个 E m ( z ) E_m(z) Em​(z) 处理输入信号的不同相位分量 二、插值应用中的数学原理 2.1 传统插值流程 插值因子 L L L 的操作 零插入 x up [ n ] { x [ n / L ] n m o d L 0 0 otherwise x_{\text{up}}[n] \begin{cases} x[n/L] n \mod L0 \\ 0 \text{otherwise} \end{cases} xup​[n]{x[n/L]0​nmodL0otherwise​滤波 y [ n ] ∑ k 0 N h [ k ] x up [ n − k ] y[n] \sum_{k0}^{N} h[k] x_{\text{up}}[n-k] y[n]∑k0N​h[k]xup​[n−k] 计算复杂度 O ( L ⋅ N ) O(L \cdot N) O(L⋅N) 2.2 多相插值的等效变换 利用多相分解重写输出 Y ( z ) H ( z ) X up ( z ) ( ∑ m 0 L − 1 z − m E m ( z L ) ) X ( z L ) (因  X up ( z ) X ( z L ) ) ∑ m 0 L − 1 z − m [ E m ( z L ) X ( z L ) ] \begin{align*} Y(z) H(z) X_{\text{up}}(z) \\ \left( \sum_{m0}^{L-1} z^{-m} E_m(z^L) \right) X(z^L) \quad \text{(因 } X_{\text{up}}(z)X(z^L)\text{)} \\ \sum_{m0}^{L-1} z^{-m} \left[ E_m(z^L) X(z^L) \right] \end{align*} Y(z)​H(z)Xup​(z)(m0∑L−1​z−mEm​(zL))X(zL)(因 Xup​(z)X(zL))m0∑L−1​z−m[Em​(zL)X(zL)]​ 时域实现步骤 输入 x [ n ] x[n] x[n] 直接进入 L L L 个子滤波器 E m E_m Em​子滤波器输出 u m [ n ] e m [ n ] ∗ x [ n ] u_m[n] e_m[n] * x[n] um​[n]em​[n]∗x[n]输出合成 y [ n ] ∑ m 0 L − 1 u m [ ⌊ n / L ⌋ ] δ [ ( n m o d L ) − m ] y[n] \sum_{m0}^{L-1} u_m\left[\lfloor n/L \rfloor\right] \delta[(n \mod L) - m] y[n]∑m0L−1​um​[⌊n/L⌋]δ[(nmodL)−m] 计算优势避免零值乘法复杂度降至 O ( N ) O(N) O(N) 三、抽取应用中的数学原理 3.1 传统抽取流程 抽取因子 M M M 的操作 滤波 v [ n ] ∑ k 0 N h [ k ] x [ n − k ] v[n] \sum_{k0}^{N} h[k] x[n-k] v[n]∑k0N​h[k]x[n−k]下采样 y [ m ] v [ m M ] y[m] v[mM] y[m]v[mM] 计算复杂度 O ( M ⋅ N ) O(M \cdot N) O(M⋅N) 3.2 多相抽取的等效变换 通过Noble恒等式交换操作顺序 Y ( z ) ↓ M { H ( z ) X ( z ) } ∑ k 0 M − 1 E k ( z ) ( ↓ M { z − k X ( z ) } ) \begin{align*} Y(z) \downarrow M \left\{ H(z) X(z) \right\} \\ \sum_{k0}^{M-1} E_k(z) \left( \downarrow M \left\{ z^{-k} X(z) \right\} \right) \end{align*} Y(z)​↓M{H(z)X(z)}k0∑M−1​Ek​(z)(↓M{z−kX(z)})​ 时域实现步骤 输入分相 x k [ m ] x [ m M k ] ( k 0 , 1 , … , M − 1 ) x_k[m] x[mM k] \quad (k0,1,\dots,M-1) xk​[m]x[mMk](k0,1,…,M−1)子滤波器处理 v k [ m ] e k [ m ] ∗ x k [ m ] v_k[m] e_k[m] * x_k[m] vk​[m]ek​[m]∗xk​[m]输出合并 y [ m ] ∑ k 0 M − 1 v k [ m ] y[m] \sum_{k0}^{M-1} v_k[m] y[m]∑k0M−1​vk​[m] 计算优势避免丢弃样本的计算浪费复杂度 O ( N ) O(N) O(N) 四、Python仿真实验 4.1 实验设计 目标验证多相分解的数学等价性和计算效率信号 x [ n ] cos ⁡ ( 2 π ⋅ 0.05 n ) 0.3 cos ⁡ ( 2 π ⋅ 0.4 n ) x[n] \cos(2\pi \cdot 0.05n) 0.3\cos(2\pi \cdot 0.4n) x[n]cos(2π⋅0.05n)0.3cos(2π⋅0.4n)参数 L 3 L3 L3 (插值), M 4 M4 M4 (抽取), N 60 N60 N60 (滤波器阶数)滤波器Hamming窗设计截止频率 f c 0.1 f s f_c0.1f_s fc​0.1fs​ 4.2 完整代码(代码还有问题博主正在调试持续修正) # -*- coding: utf-8 -*-Created on Sat Jun 14 22:21:44 2025author: KXQ import numpy as np import matplotlib.pyplot as plt from scipy import signal import timeplt.close(all) # 设置全局字体为支持中文的字体 plt.rcParams[font.sans-serif] [SimHei] # 黑体 # 解决负号显示问题 plt.rcParams[axes.unicode_minus] False# 参数设置 fs 100 # 原始采样率 (Hz) T 1 # 信号时长 (秒) t np.linspace(0, T, int(fs * T), endpointFalse) # 时间向量 f_signal 10 # 信号频率 (Hz) M 4 # 抽取因子 (修改为4以更明显展示效果) fc fs / (2 * M) # 截止频率 12.5 Hz (满足 Nyquist) N 31 # 滤波器阶数 (奇数以减少延迟)# 生成测试信号: 10Hz正弦波 高频分量 噪声 np.random.seed(42) x (np.sin(2 * np.pi * f_signal * t) 0.5 * np.sin(2 * np.pi * 30 * t) 0.1 * np.random.randn(len(t)))# 设计FIR低通滤波器 (抗混叠) taps signal.firwin(N, fc, fsfs, windowhamming, pass_zerolowpass)# # 多相抽取实现 # # 1. 多相分解将滤波器拆分为M个子滤波器 poly_taps [taps[i::M] for i in range(M)]# 2. 输入信号分解创建M个多相分支 x_poly [x[i::M] for i in range(M)]# 3. 每个分支通过对应的子滤波器 # 使用modesame保持输出长度与输入一致 v [signal.convolve(x_poly[i], poly_taps[i], modesame) for i in range(M)]# 4. 确定最小输出长度确保所有分支长度一致 min_len min(len(subseq) for subseq in v)# 5. 截取相同长度的输出并求和 # 修正直接对数组求和不需要切片索引 y_decim_poly np.zeros(min_len) for i in range(M):y_decim_poly v[i][:min_len] # 仅对数组切片# 6. 下采样由于多相结构已处理输出即为抽取结果 t_decim_poly np.linspace(0, T, len(y_decim_poly), endpointFalse)# # 对比使用标准方法进行抽取 # # 先滤波后下采样 x_filtered signal.convolve(x, taps, modesame) y_decim_std x_filtered[::M] # 直接下采样 t_decim_std np.linspace(0, T, len(y_decim_std), endpointFalse)# # 结果可视化 # plt.figure(figsize(14, 10))# 原始信号频谱 plt.subplot(3, 1, 1) freq np.fft.rfftfreq(len(x), 1/fs) plt.plot(freq, 20*np.log10(np.abs(np.fft.rfft(x))/len(x) 1e-10)) plt.title(原始信号频谱 (含30Hz高频分量)) plt.xlabel(频率 (Hz)) plt.ylabel(幅度 (dB)) plt.grid(True) plt.xlim(0, 50)# 多相抽取结果 plt.subplot(3, 1, 2) plt.plot(t_decim_poly, y_decim_poly, ro-, label多相抽取) plt.plot(t_decim_std, y_decim_std, b--, label标准抽取) plt.xlabel(时间 (秒)) plt.ylabel(幅度) plt.title(f抽取结果比较 (M{M}, fs{fs//M}Hz)) plt.legend() plt.grid(True)# 抽取后频谱 plt.subplot(3, 1, 3) freq_poly np.fft.rfftfreq(len(y_decim_poly), 1/(fs/M)) plt.plot(freq_poly, 20*np.log10(np.abs(np.fft.rfft(y_decim_poly))/len(y_decim_poly) 1e-10), r-, label多相抽取)freq_std np.fft.rfftfreq(len(y_decim_std), 1/(fs/M)) plt.plot(freq_std, 20*np.log10(np.abs(np.fft.rfft(y_decim_std))/len(y_decim_std) 1e-10), b--, label标准抽取)plt.title(抽取后频谱 (无混叠)) plt.xlabel(频率 (Hz)) plt.ylabel(幅度 (dB)) plt.legend() plt.grid(True) plt.xlim(0, 25) # 新Nyquist频率为25Hzplt.tight_layout() plt.show()# 性能对比 print(\n性能验证:) print(f多相抽取输出长度: {len(y_decim_poly)}) print(f标准抽取输出长度: {len(y_decim_std)}) print(频谱图显示30Hz分量被正确滤除无混叠现象) 4.3 实验结果分析 数学等价性 插值输出差异 10 − 14 10^{-14} 10−14 (浮点计算误差)抽取输出差异 10 − 15 10^{-15} 10−15验证多相分解的数学正确性 计算效率 插值加速比: 2.85x 抽取加速比: 3.20x实际加速比接近理论值 L L L 或 M M M 倍 频谱特性 插值后高频镜像被完美抑制抽取后无频谱混叠 (0.4fₛ分量被滤除) 关键参数影响 滤波器阶数 N N N阶数越高加速比越显著分解因子 L / M L/M L/M因子越大多相优势越明显边界效应多相方法边界失真更小 五、工程实现要点 5.1 高效实现技巧 并行计算FPGA中映射子滤波器到独立DSP单元 // FPGA多相插值伪代码 for m0 to L-1 parallel:u_m FIR(e_m, x)y(m::L) u_m内存优化避免零值存储采用循环缓冲区 实时性保障流水线结构处理相位合成 5.2 设计误差分析 相位失真 来源子滤波器群延迟差异补偿设计线性相位FIR (h[n]对称) 幅度误差 ϵ 1 2 π ∫ − π π ∣ H ( e j ω ) − ∑ m e − j ω m E m ( e j ω L ) ∣ d ω \epsilon \frac{1}{2\pi} \int_{-\pi}^{\pi} \left| H(e^{j\omega}) - \sum_{m} e^{-j\omega m} E_m(e^{j\omega L}) \right| d\omega ϵ2π1​∫−ππ​ ​H(ejω)−m∑​e−jωmEm​(ejωL) ​dω 实际值 10 − 6 10^{-6} 10−6 (双精度下) 结论 FIR多项滤波器的数学核心在于多相分解定理 H ( z ) ∑ m 0 P − 1 z − m E m ( z P ) H(z) \sum_{m0}^{P-1} z^{-m} E_m(z^P) H(z)∑m0P−1​z−mEm​(zP)它通过三个关键步骤实现高效采样率转换 系数分解按相位分组滤波器系数等效变换利用Noble恒等式交换操作顺序并行处理独立计算子滤波器输出 实验证明该方法在保持数学等价性的同时将计算复杂度从 O ( L N ) O(LN) O(LN) 或 O ( M N ) O(MN) O(MN) 降至 O ( N ) O(N) O(N)为5G通信、高清音频处理等实时系统提供理论基础。未来可结合机器学习优化滤波器系数进一步提升边缘设备的能效比。 研究学习不易点赞易。 工作生活不易收藏易点收藏不迷茫
http://www.w-s-a.com/news/397439/

相关文章:

  • 像京东一样的网站wordpress入门视频教程7 - 如何在文章里加入视频和音乐
  • 惠州网站建设排名wordpress3万篇文章优化
  • 创建网站的三种方法北京建王园林工程有限公司
  • jsp网站建设模板下载十大免费excel网站
  • 网络公司网站图片网站建立好了自己怎么做优化
  • 云主机是不是可以搭建无数个网站百度快速seo优化
  • 房地产怎么做网站推广建立音乐网站
  • 川畅科技联系 网站设计网站开发的教学视频
  • 为什么学网站开发凡科登陆
  • 设计师常备设计网站大全中山精品网站建设信息
  • 杭州建设工程网seo服务是什么
  • 兼职做问卷调查的网站wordpress mysql设置
  • 怎么在百度上能搜到自己的网站山西seo谷歌关键词优化工具
  • 网站搭建免费模板飞鱼crm下载
  • 网站开发竞品分析app制作公司深圳
  • 网站建设ssc源码修复设计班级网站建设
  • 网站重定向凡科做网站不要钱
  • 佛山html5网站建设微信营销软件破解版
  • 网站单页做301南京百度推广
  • 私人做网站要多少钱展芒设计网页
  • 怎样网站制作设计如何在网上推广农产品
  • 做关键词排名卖网站聚名网
  • 吉林省住房城乡建设厅网站首页体育器材网站建设方案
  • 网站建设及维护专业手机金融界网站
  • 常州网站建设工作室建立网站有怎么用途
  • 如何盗取网站推广策划书模板
  • 游戏网站建设计划书网络开发需要学什么
  • 手机网站维护费网站开发包括网站过程
  • 懂做游戏钓鱼网站的网站建设技术的发展
  • 网站被百度收录百度一下你就知道 官网