CZT Blusetein‘s FFT

参考文献:

  1. [Sto66] Stockham Jr T G. High-speed convolution and correlation[C]//Proceedings of the April 26-28, 1966, Spring joint computer conference. 1966: 229-233.
  2. [Blu68] Bluestein L. A linear filtering approach to the computation of discrete Fourier transform[J]. IEEE Transactions on Audio and Electroacoustics, 1970, 18(4): 451-455.
  3. [RSR69] Rabiner L R, Schafer R W, Rader C M. The chirp z‐transform algorithm and its application[J]. Bell System Technical Journal, 1969, 48(5): 1249-1292.
  4. [PKG+16] Pariyal P S, Koyani D M, Gandhi D M, et al. Comparison based analysis of different FFT architectures[J]. International journal of image, graphics and signal processing, 2016, 8(6): 41.
  5. 数字信号处理——Chirp Z变换_chirpz变换-CSDN博客
  6. Bluestein算法简要介绍-CSDN博客
  7. 如何理解离散傅里叶变换及Z变换 - 知乎 (zhihu.com)
  8. Bluestein’s FFT Algorithm (stanford.edu)

文章目录

  • Z-transform
  • Chirp Z-transform
  • Bluestein's FFT

Z-transform

给定复数序列 x n , n ∈ [ − ∞ , + ∞ ] x_n, n \in [-\infty,+\infty] xn,n[,+],它的 Z-transform 定义为
X ( z ) = ∑ n x n z − n X(z) = \sum_n x_n z^{-n} X(z)=nxnzn
这是关于复变量 z z z 的连续函数。可以限制在有限个的非零的时域样本
X ( z ) = ∑ n = 0 N − 1 x n z − n X(z) = \sum_{n=0}^{N-1} x_nz^{-n} X(z)=n=0N1xnzn
这个有限和对于任意的 z ≠ 0 z\neq 0 z=0 都收敛。假如我们选取 N N N 个频域采样点 z k , k = 0 , 1 , ⋯   , N − 1 z_k,k=0,1,\cdots,N-1 zk,k=0,1,,N1,可以计算这些位置的函数值:
X k = X ( z k ) = ∑ n = 0 N − 1 x n z k − n X_k = X(z_k) = \sum_{n=0}^{N-1} x_nz_k^{-n} Xk=X(zk)=n=0N1xnzkn
特别地,如果设置 z k = e 2 k π i / N z_k = e^{2k\pi i/N} zk=e2kπi/N(复平面上单位圆的等分点),那么它恰好是 DFT

Chirp Z-transform

[RSR69] 研究了更一般的螺线上的 Z-transform,称之为啁啾 Z 变换。采样点的形式为:
z k = A W − k , k = 0 , 1 , ⋯   , M − 1 z_k = AW^{-k}, k=0,1,\cdots,M-1 zk=AWk,k=0,1,,M1
其中 M M M 是任意整数, A , W A,W A,W 是任意复数,可写作如下的形式:
A = A 0 e 2 π i ⋅ θ 0 W = W 0 e 2 π i ⋅ ϕ 0 \begin{aligned} A &= A_0 e^{2\pi i \cdot \theta_0}\\ W &= W_0 e^{2\pi i \cdot \phi_0}\\ \end{aligned} AW=A0e2πiθ0=W0e2πiϕ0
其中,

  • A 0 ∈ R + A_0 \in \mathbb R^+ A0R+ 表示起始采样点 z 0 z_0 z0 的模长
  • θ 0 ∈ [ 0 , 1 ) \theta_0 \in [0,1) θ0[0,1) 确定了起始采样点 z 0 z_0 z0 的相位角,确切地说是 2 π θ 0 2\pi \theta_0 2πθ0
  • ϕ 0 ∈ [ 0 , 1 ) \phi_0 \in [0,1) ϕ0[0,1) 确定了相邻采样点之间的角差距(angular spacing),确切地说是 2 π ϕ 0 2\pi \phi_0 2πϕ0
  • W 0 ∈ R + W_0 \in \mathbb R^+ W0R+ 表示螺线的伸展率,
    • W 0 = 1 W_0=1 W0=1 时,采样点形成了一段圆弧
    • W 0 < 1 W_0<1 W0<1 时,螺旋线是外伸的(spiral out)
    • W 0 > 1 W_0>1 W0>1 时,螺旋线是内缩的(spiral in)

如图所示:

在这里插入图片描述

根据螺线上采样点的形式,可以写出:
X k = X ( A W − k ) = ∑ n = 0 N − 1 x n A − n W n k ,    k ∈ [ M ] X_k = X(AW^{-k}) = \sum_{n=0}^{N-1} x_nA^{-n}W^{nk},\,\, k \in [M] Xk=X(AWk)=n=0N1xnAnWnk,k[M]
啁啾 Z 变换不要求 N , M N,M N,M 相等,并且它们都是任意整数(包括素数),这里 N N N 是时域样本数,而 M M M 是频域样本数。

Bluestein’s FFT

[RSR69] 给出了计算 CZT 的快速算法。首先使用 Bluestein’s ingenious substitution
n k = n 2 + k 2 − ( k − n ) 2 2 nk = \frac{n^2 + k^2 - (k-n)^2}{2} nk=2n2+k2(kn)2
于是可以得到:
X k = W k 2 2 ⋅ ∑ n = 0 N − 1 ( x n A − n W n 2 2 ) W − ( k − n ) 2 2 = W k 2 2 ⋅ [ x n A − n W n 2 2 ] n ∈ Z ⊛ k [ W − n 2 2 ] n ∈ Z \begin{aligned} X_k &= W^{\frac{k^2}{2}} \cdot \sum_{n=0}^{N-1} \left(x_nA^{-n}W^{\frac{n^2}{2}}\right) W^{-\frac{(k-n)^2}{2}}\\ &= W^{\frac{k^2}{2}} \cdot \left[x_nA^{-n}W^{\frac{n^2}{2}}\right]_{n \in \mathbb Z} \circledast_k \left[W^{-\frac{n^2}{2}}\right]_{n \in \mathbb Z} \end{aligned} Xk=W2k2n=0N1(xnAnW2n2)W2(kn)2=W2k2[xnAnW2n2]nZk[W2n2]nZ
其中符号 ⊛ k \circledast_k k 表示位置 k ∈ Z k \in \mathbb Z kZ 的卷积运算。因此 CZT 可以被这么计算:

  1. 首先根据序列 x n , n ∈ [ N ] x_n,n \in [N] xn,n[N],计算新的序列 y n = x n A − n W n 2 2 ,    n ∈ [ N ] y_n = x_nA^{-n}W^{\frac{n^2}{2}},\,\, n \in [N] yn=xnAnW2n2,n[N]

  2. 其次使用 FFT 去计算(有限长的时域上)卷积运算。[Blu68] 使用了 [Sto66] 建议的 zero padding + cyclic convolution 策略,

    1. 设置 L = 2 m ≥ N + M − 1 L=2^m \ge N+M-1 L=2mN+M1 是二的幂次

    2. 构造 L L L 长序列
      f n = { y n , 0 ≤ n ≤ N − 1 0 , N ≤ n ≤ L − 1 f_n = \left\{\begin{aligned} y_n, && 0 \le n \le N-1\\ 0, && N \le n \le L-1 \end{aligned}\right. fn={yn,0,0nN1NnL1

    3. 构造 L L L 长序列
      h n = { W − n 2 2 , 0 ≤ n ≤ M − 1 W − ( n − L ) 2 2 , M ≤ n ≤ L − 1 h_n = \left\{\begin{aligned} W^{-\frac{n^2}{2}}, && 0 \le n \le M-1\\ W^{-\frac{(n-L)^2}{2}}, && M \le n \le L-1 \end{aligned}\right. hn= W2n2,W2(nL)2,0nM1MnL1

    4. 使用 radix-2 FFT 分别计算出 F k , k ∈ [ L ] F_k, k\in[L] Fk,k[L] 以及 H k , k ∈ [ L ] H_k, k\in[L] Hk,k[L](使用 L L L-th 本原单位根),计算阿达玛乘积 G k = F k ⋅ H k G_k = F_k \cdot H_k Gk=FkHk,再使用 Inv-FFT 计算出 g k , k ∈ [ L ] g_k, k\in[L] gk,k[L],并截取出前 k k k 个数值

  3. 最后计算 X k = g k ⋅ W k 2 2 ,    k ∈ [ M ] X_k = g_k \cdot W^{\frac{k^2}{2}},\,\, k \in [M] Xk=gkW2k2,k[M]

总的计算开销是 O ( ( N + M ) log ⁡ 2 ( N + M ) ) O\big((N+M)\log_2(N+M)\big) O((N+M)log2(N+M)),但是它花费了 3 3 3 个长度 L ≥ N + M − 1 L \ge N+M-1 LN+M1 的 FFT 运算,因此隐藏的常数比 FFT 大得多。好处是时域上的采样点形成了更一般的螺线,并且数量可以是任意的,它比 DFT 更加灵活

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/559883.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码优化实践之税率计算问题

开篇 今天的问题来自于《编程珠玑》第三章【数据决定程序结构】&#xff0c;这里提出了几条代码优化相关的原则&#xff0c;受益不浅。下面是提到的几条原则&#xff1a; 使用数组重新编写重复代码。冗长的相似代码往往可以使用最简单的数据结构——数组来更好的表述&#xff1…

Vue3: toRefs与toRef的基本使用

一、前言 本文主要介绍toRefs与toRef的基本使用。 二、内容 1、基本概念 作用: toRefs与toRef可以将一个响应式对象中的每一 个属性&#xff0c;转换为ref对象&#xff1b;不同 toRefs与toRef功能一致&#xff0c;但toRefs可以批量转换。 2、toRefs 如果把reactive定义的…

ROS仿真小车(四)—— URDF与Gazebo集成

文章目录 前言一、ubuntu20.04中下载gazebo_models二、在gazebo中显示简单模型1 创建功能包&#xff0c;导入依赖2 编写URDF文件3 编写launch文件4 在gazebo中显示机器人模型 三、URDF集成Gazebo相关设置四、在gazebo中导入小车模型1 编写xacro文件2 编写launch文件3 运行结果 …

Stable Diffusion 模型分享:MeinaMix(动漫)meinamix_meinaV11

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 MeinaMix 的目标是&#xff1a;能够在很少的提示下…

SpectralMamba:用于高光谱图像分类的高效 Mamba

SpectralMamba&#xff1a;用于高光谱图像分类的高效 Mamba 摘要IntroductionMethodologyPreliminariesSpectralMamba: OverviewSpectralMamba: Key ComponentsB1 Piece-wise Sequential ScanningIii-B2 Gated Spatial-Spectral Merging SpectralMamba: Efficient Mamba for Hy…

【InternLM 实战营第二期作业06】Lagent AgentLego 智能体应用搭建

基础作业 1.完成 Lagent Web Demo 使用 使用 LMDeploy 部署 conda activate agent lmdeploy serve api_server /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b \--server-name 127.0.0.1 \--model-name internlm2-chat-7b \--cache-max-entry-count 0.1 …

Linux文件的特殊权限(SUID|SGID|SBIT)

一、SUID 介绍&#xff1a;SUID是一种对二进制程序进行设置的特殊权限&#xff0c;能够让二进制程序的执行者临时拥有所有者的权限&#xff08;仅对拥有执行权限的二进制程序有效&#xff09;。 &#xff08;一&#xff09;语法格式 chmod us 文件名&#xff08;设置SUID权限…

SOLIDWORKS批量改名工具个人版 慧德敏学

每个文件都会有自己的名字&#xff0c;SOLIDWOKRKS模型也不例外。但是如果从资源管理器直接修改模型的文件名&#xff0c;就会导致模型关联的丢失&#xff0c;导致装配体打开之后找不到模型&#xff0c;因此就需要使用SOLIDWORKS的重命名功能。 SOLIDWORKS批量改名插件- Solid…

智能电网线路阻抗模拟器基础认识

智能电网线路阻抗模拟器是专门用于模拟电力系统输电线路阻抗特性的装置&#xff0c;它能够根据设定的参数&#xff0c;精确地模拟出各种不同类型、不同长度和不同截面积的输电线路在正常运行或故障状态下的阻抗特性。这种模拟器在电力系统的规划、设计、运行和维护中起着重要的…

交换机的种类有哪些?主要都具有哪些作用?

在当今数字化时代&#xff0c;网络已经成为我们生活和工作中不可或缺的一部分。无论是家庭网络还是企业网络&#xff0c;都需要有效的网络设备来实现数据通信和资源共享。而网络交换机作为一种重要的网络设备&#xff0c;扮演着连接和管理网络设备的关键角色。本文将探讨交换机…

TXT文本编辑器,高效将文本里特定符号前的内容作为关键词一键复制或移动文件,效管理文件内容

在日常工作和生活中&#xff0c;我们经常需要处理大量的文件&#xff0c;而文件的管理和整理则成为了一个重要的问题。传统的文件管理方式不仅效率低下&#xff0c;而且容易出错。为了解决这一难题&#xff0c;我们推出了一款强大的TXT文本编辑器&#xff0c;它能够帮助你以文件…

岩石变角剪切试验夹具 技术参数

岩石变角试验夹具是根据TB10115-2014铁路工程岩石试验规程等标准利用压力机施加垂直荷载,通过一套特制的夹具使试件沿某一剪切面产生剪切破坏,然后通过静力平衡条件解析剪切面上的法向压应力和剪应力,从而绘制法向压应力&#xff08;σ&#xff09;与剪应力&#xff08;τ&…

flutter release 报错 Error: SocketException: Failed host lookup:

flutter 的 debug 模式没有任何问题 &#xff0c;打了release 包后一直报下面的错&#xff0c;查了一下是 因为没有网络权限 Error: SocketException: Failed host lookup: yomi-test-aws-sg.yomigame.games (OS Error: No address associated with hostname, errno 7) 按照下…

YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 / RTDETR -gui界面-交互式图形化界面

往期热门博客项目回顾&#xff1a;点击前往 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上…

使用 大模型快速生成-jsToJava 的正则表达式离线版本的简单html页面

注意&#xff1a;需求要描述清楚-提高程序员的工作效率 代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0&quo…

C++相关概念和易错语法(6)(运算符重载)

1.运算符重载注意事项&#xff1a; &#xff08;1&#xff09;多个同一运算符重载可构成函数重载 &#xff08;2&#xff09;在成员函数中由于隐含了this指针&#xff0c;外部调用看上去前置和后置不会有任何区别&#xff0c;所以为了区分这个在后置时强制引入参数int&#x…

医药行业如何巧用AI智能客服机器人?看完你就会了

我们都知道&#xff0c;医药行业信息量庞大&#xff0c;行业规范严格&#xff0c;客户查询和服务需求复杂多变。那么&#xff0c;医药企业该如何高效响应客户&#xff0c;同时保持服务质量并降低成本呢&#xff1f;答案很可能就在AI智能客服机器人。 AI智能客服机器人利用人工智…

【鸿蒙NEXT】web组件debug模式

官方文档 使用Devtools工具调试前端页面 打开web debug模式 webview.WebviewController.setWebDebuggingAccess(true)chrome 访问 chrome://inspect/#devices Discover network targets 中添加 localhost:9222 创建cat.sh name$(hdc shell ps -ef | grep com.cib.qdzg | …

js作业微博发言

微博 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content&q…

TVBox的Json配置接口编写指南,模板格式说明(如何打造一个专属于自己的TVBox配置文件)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 配置解析 📒📝 JSON基础📝 配置文件结构/参数说明📝 编写步骤📝 注意事项🎈 接口分享⚓️ 相关链接 ⚓️📖 介绍 📖 TVBox 是一款备受欢迎的电视盒子应用(免费影视必备),它以其高度自定义的特性深受用户喜爱…