Chirp-Z变换(Chirp-Z Transform,CZT)

采用FFT算法可以很快地计算出全部DFT值,即Z变换在单位圆上的全部等间隔采样值。
在实际情况中,并不需要对整个单位圆的频谱进行分析,例如,对于窄带信号,往往只需要对信号所在的一段频带进行分析,即可在所关心的这段频带内进行密集的采样,而对这个频带以外的部分可以完全不管。
Z变换的螺旋采样,它沿Z平面上的一段螺线进行等分角的采样,这些采样点可以表示为
zk=AW−k,k=0,1,⋯,M−1z_k=AW^{-k},\ \ k=0,1,\cdots,M-1zk​=AW−k,  k=0,1,⋯,M−1
其中,MMM为采样点的总数,AAA为起始点位置,可以用半径A0A_0A0​及相角θ0\theta_0θ0​表示为A=A0ejθ0A=A_0 e^{j\theta_0}A=A0​ejθ0​;
参数WWW表示为W=W0e−jϕ0W=W_0e^{-j\phi_0}W=W0​e−jϕ0​,W0W_0W0​为螺线的伸展率,W0>1W_0>1W0​>1,螺线内缩,W0<1W_0<1W0​<1,螺线外伸;
ϕ0\phi_0ϕ0​为螺线上采样点之间的等分角。

当M=NM=NM=N、A=1A=1A=1、W=e−j2πNW=e^{-j\frac{2\pi}{N}}W=e−jN2π​时,zkz_kzk​就等间隔地分布在单位圆上,这时CZT退化DFT。
假设x(n)x(n)x(n)是长度为NNN的有限长序列,则其Z变换在采样点zkz_kzk​上的值X(zk)=∑n=0N−1x(n)zk−n,k=0,1,1,⋯,M−1X(z_k)=\sum_{n=0}^{N-1}x(n)z_k^{-n}, \ \ k=0,1,1,\cdots,M-1X(zk​)=n=0∑N−1​x(n)zk−n​,  k=0,1,1,⋯,M−1
为减少计算量,将上式运算转换为卷积形式,从而采用FFT进行计算。

算法原理

将zk=AW−kz_k=AW^{-k}zk​=AW−k代入X(zk)=∑n=0N−1x(n)zk−nX(z_k)=\sum_{n=0}^{N-1}x(n)z_k^{-n}X(zk​)=∑n=0N−1​x(n)zk−n​可得
X(zk)=∑n=0N−1x(n)A−nWnkX(z_k)=\sum_{n=0}^{N-1}x(n)A^{-n}W^{nk}X(zk​)=n=0∑N−1​x(n)A−nWnk
将nknknk替换为12[k2+n2−(k−n)2]\frac{1}{2}[k^2+n^2-(k-n)^2]21​[k2+n2−(k−n)2],则
X(zk)=∑n=0N−1x(n)A−nW12[k2+n2−(k−n)2]=Wk22∑n=0N−1x(n)A−nWn22W−(k−n)22X(z_k)=\sum_{n=0}^{N-1}x(n)A^{-n}W^{\frac{1}{2}[k^2+n^2-(k-n)^2]}=W^\frac{k^2}{2}\sum_{n=0}^{N-1}x(n)A^{-n}W^{\frac{n^2}{2}}W^{-\frac{(k-n)^2}{2}}X(zk​)=n=0∑N−1​x(n)A−nW21​[k2+n2−(k−n)2]=W2k2​n=0∑N−1​x(n)A−nW2n2​W−2(k−n)2​
定义g(n)=x(n)A−nWn22,n=0,1,2,⋯,N−1g(n)=x(n)A^{-n}W^{\frac{n^2}{2}},\ \ n=0,1,2,\cdots,N-1g(n)=x(n)A−nW2n2​,  n=0,1,2,⋯,N−1和h(n)=W−n22h(n)=W^{\frac{-n^2}{2}}h(n)=W2−n2​,则有
g(k)∗h(k)=∑n=0N−1g(n)h(k−n)=∑n=0N−1x(n)A−nWn22W−(k−n)22,k=0,1,⋯,M−1g(k)\ast h(k)=\sum_{n=0}^{N-1}g(n)h(k-n)=\sum_{n=0}^{N-1}x(n)A^{-n}W^{\frac{n^2}{2}}W^{-\frac{(k-n)^2}{2}},\ \ k=0,1,\cdots,M-1g(k)∗h(k)=n=0∑N−1​g(n)h(k−n)=n=0∑N−1​x(n)A−nW2n2​W−2(k−n)2​,  k=0,1,⋯,M−1
则有
X(zk)=[g(k)∗h(k)]Wk22,k=0,1,⋯,M−1X(z_k)=[g(k)\ast h(k)]W^{k^2}{2},\ \ k=0,1,\cdots,M-1X(zk​)=[g(k)∗h(k)]Wk22,  k=0,1,⋯,M−1
算法流程图如下:

实现步骤

  1. 选择一个最小整数LLL,使其满足L≥N+M−1L\ge N+M-1L≥N+M−1,同时L=2mL=2^mL=2m;
  2. 求h(n)h(n)h(n)的主值序列h^(n)\hat h(n)h^(n),并计算DFT;
    h^(n)={W−n220≤n≤M−1任意值N≤n≤L−1W−(n−L)22L−N+1≤n≤L−1\hat h(n)=\left\{\begin{array}{ll} W^{-\frac{n^2}{2}} & 0\le n \le M-1 \\ \text{任意值} & N \le n \le L-1 \\ W^{-\frac{(n-L)^2}{2}} & L-N+1\le n \le L-1 \end{array}\right.h^(n)=⎩⎨⎧​W−2n2​任意值W−2(n−L)2​​0≤n≤M−1N≤n≤L−1L−N+1≤n≤L−1​
    H(k)=DFT[h^(n)],L点H(k)=DFT[\hat h(n)],\ \ L点H(k)=DFT[h^(n)],  L点
  3. 对x(n)x(n)x(n)加权、补零,并计算DFT;
    g(n)={x(n)A−nWn220≤n≤N−10N≤n≤L−1g(n)=\left\{\begin{array}{ll} x(n)A^{-n}W^{\frac{n^2}{2}} & 0\le n \le N-1 \\ 0 & N \le n \le L-1 \end{array}\right.g(n)={x(n)A−nW2n2​0​0≤n≤N−1N≤n≤L−1​
    G(k)=DFT[g(n)],L点G(k)=DFT[g(n)],\ \ L点G(k)=DFT[g(n)],  L点
  4. Y(k)=G(k)H(k),L点Y(k)=G(k)H(k),\ \ L点Y(k)=G(k)H(k),  L点;
  5. y(n)=IDFT[Y(k)],L点y(n)=IDFT[Y(k)],\ \ L点y(n)=IDFT[Y(k)],  L点;
  6. X(zk)=Wk22y(k),0≤k≤M−1X(z_k)=W^{\frac{k^2}{2}}y(k),\ \ 0 \le k \le M-1X(zk​)=W2k2​y(k),  0≤k≤M−1。

上述步骤实现程序可见Matlab的czt函数内部程序。

仿真分析

此处使用函数czt实现Chirp-Z变换,并将结果与DFT和采样序列插0后序列的DFT进行对比。

clc;clear;close all;
N = 8192;
f1 = 100;
f2 = 101;
fs = 8000;
Ts = 1/fs;
ts = (1:N)*Ts;
x = cos(2*pi*f1*ts) + cos(2*pi*f2*ts) + 0.5*randn(1,N);
y_DFT = abs(fft(x)); %%DFT
w = exp(-1i*2*pi*(150-50)/(N*fs));
a = exp(1i*2*pi*50/fs);
y_CZT = abs(czt(x,N,w,a));%%CZTfn = (0:N-1)/N;
fy = fs*fn;
fz = (150-50)*fn + 50;
fyy = fs*(0:2*N-1)/(2*N);
xx = [x zeros(1,N)];
yy_DFT = abs(fft(xx)); %%插0 DFT
plot(yy_DFT);
plot(fy,20*log10(y_DFT), fz,20*log10(y_CZT), fyy,20*log10(yy_DFT));
xlim([80 120]);
legend('DFT','CZT','插0 DFT');

Chirp-Z变换(线性调频Z变换)原理相关推荐

  1. 线性调频Z变换 CZT

    文章目录 [1. 原理] 1.1 公式推导 1.2 z k z_k zk​ 所在的路径 1.3 CZT的特点 [2. CZT的实现步骤] 2.1 线性卷积 2.2 循环卷积 [3. CZT的应用] 3 ...

  2. 线性调频Z变换(CZT)

    已知有限长序列x(n)的Z变换为 由上式中可知z=e^(s*Ts)=e^(a+jΩ)Ts=e^(a*Ts)*e^(jΩTs)=Ae^(jΩ*Ts),,s为拉普拉斯变量,A=e^(aTs)为实数,w=Ω ...

  3. 关于线性调频Z变换(chirp-z transform)加速运算与逆变换

    线性调频Z变换CZT 概念 与傅里叶变换FT的区别 关于CZT的加速运算(FFT代替卷积) 一维CZT逆变换(伪) 二维CZT逆变换(伪) 代码(matlab,与fft2做对比) 效果与分析过程 概念 ...

  4. 从入门到放弃系列-傅里叶变换,拉普拉斯变换,Z变换

    文章目录 概述 傅里叶变换 傅里叶级数 虚指数e−jωte^{-j{\omega}t}e−jωt的引入 傅里叶级数和变换的区别 傅里叶级数和变换的一点感悟 拉普拉斯变换 Z变换 总结 参考文献 概述 ...

  5. 傅里叶变换、拉普拉斯变换与z变换对比

    前几天学自动控制原理,突然感觉自己傅里叶变换.拉普拉斯变换和z变换的区别和联系没有特别清楚,所以就放在一起研究了一下,整理总结后记录在这里. 一.傅里叶变换 傅里叶变换的基础是傅里叶级数.先讲傅里叶级 ...

  6. 【Matlab 控制】拉氏变换和Z变换

    Matlab 拉氏变换和Z变换 Matlab 拉氏变换和Z变换 拉普拉斯变换及其逆变换 Z变换及其反变换 积分变换 傅立叶变换 Matlab 拉氏变换和Z变换 拉氏变换原理剖析见 [控制]拉普拉斯拉氏 ...

  7. 傅立叶变换、拉普拉斯变换、Z 变换的联系是什么?为什么要进行这些变换?

    清楚↑ 点击蓝字 关注视学算法 作者丨DBinary@知乎 来源丨https://www.zhihu.com/question/22085329/answer/774074211 编辑丨极市平台 极市 ...

  8. matlab z变换离散化_大学学的傅里叶变换、拉氏变换、z变换,这些还能搞得懂不?...

    1.关于傅里叶变换变换? 答:fourier变换是将连续的时间域信号转变到频率域:它可以说是laplace变换的特例,laplace变换是fourier变换的推广,存在条件比fourier变换要宽,是 ...

  9. matlab零阶保持器法求z变换,教你快速求解闭环脉冲传递函数φ(z)或输出Z变换C(z)!...

    大家好,我是宝刀君,很高兴我们又见面了~ 在离散系统分析中,大家刚开始学习时,会遇到2类题:一类是没有采样开关,让你求系统的输出Z变换C(z):另一类是有采样开关时,让你求系统的闭环脉冲传递函数,进而 ...

  10. 卷积、傅立叶变换、拉普拉斯变换、Z变换

    2018-10-27 准备计控期中考试,看课件过程中又出现z变换,然后又搜出一堆博客,陷入不懂的循环. 不过,对卷积和傅里叶变换知道了一点,比之前清晰了一些. [转]卷积及拉普拉斯变换的通俗解释 图像 ...

最新文章

  1. 2018.1.15 6周1次课
  2. Java实现线性表-顺序表示和链式表示
  3. 使用css实现背景图片无重复填充
  4. 博士在读却连矩阵的秩都搞不清,我该如何毕业?|Reddit热议
  5. java数组长度怎么求,含答案解析
  6. 直播 | 彩云科技CEO袁行远:NLP与冒险游戏研究一览
  7. Udemy - Build Apps with React Native
  8. FxFactory 8 Pro for Mac(fcpx/ae/pr视觉特效插件包)
  9. nodejs+express+mongodb+react+layui完整的小说阅读系统--悦读
  10. RS-485 通讯协议简介
  11. 【推荐】智慧城市顶层设计及其建设规划实施解决方案可行性研究报告合集(共107份,963M)
  12. 在angular中实现图片/视频的预览
  13. 解决windows2003 sp1“数据执行保护”惹的祸
  14. 剑指Offer-22反转链表
  15. 松翰烧录器在keil仿真时闪退,解决方法
  16. 今日头条校招真题——头条校招
  17. Js push整个数组
  18. 我迄今见过最完美的中文编程开发工具
  19. APP进行微信分享,提示签名不一致解决方案
  20. 如何在fragment中添加ListView,并设置ListView中条目的值

热门文章

  1. DIV布局个人介绍网页模板代码 家乡海阳个人简介网页制作 简单个人静态HTML网页设计作品 DW个人网站制作成品 web网页制作与实现
  2. 输出100~1000的回文素数 - 简单题
  3. JAVA实现不同pdf文件合并
  4. 嵌入式linux驱动工程师面试,嵌入式Linux驱动工程师/BSP开发工程师面试笔试题集锦...
  5. 桁架机器人立柱_宜昌桁架式机器人品牌,桁架机器人机械手
  6. 5SHY4045L0001 3BHB018162R0001
  7. 「长知识」全面了解物联网控制系统
  8. 大数据理论体系总结--数据仓库管理与全链路数据体系
  9. Quadratic Probing:二次方探查法
  10. android Rect的使用