一、前言。
Chirp Z变换也叫czt变换或者线性调频变换。
二、CZT原理。
三、CZT的算法步骤:
四、CZT的特点(与FFT比较):
五、CZT的Matlab实现。
function [] = chirpz()
clear;close all;clc;
x = [1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0];
A0 = 1; % 起始取样点的半径,A0<=1
phi0 = 0; % 起始取样点Z0的相角
psi0 = pi*0.1; % 相邻两点间的等分角
W0 = 1; % 螺旋线的伸展率,W0<1外伸,W0>1内缩,W0=1为半径A0的一段弧,若A0=1为单位圆的一部分
A = A0 * exp(j*phi0);
W = W0 * exp(-j*psi0);
M = 8;
z = A*(W.^(-(0:M-1)));
zplane([],z.'); % z平面分布
figure
y1 = czt(x,M,W,A); % 利用自定义参数的czt
subplot(311);
plot(abs(y1),'r');
y2 = fft(x); % 等间隔采样的fft
subplot(312);
plot(abs(y2),'b');
A = 1;
M = length(x);
W = exp(j*2*pi/M);
y3 = czt(x,M,W,A); % 特殊情况下的czt=fft
subplot(313);
plot(abs(y3),'b');
function [] = chirpz()
clear;close all;clc;
x = [1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0];
A0 = 1; % 起始取样点的半径,A0<=1
phi0 = 0; % 起始取样点Z0的相角
psi0 = pi*0.1; % 相邻两点间的等分角
W0 = 1; % 螺旋线的伸展率,W0<1外伸,W0>1内缩,W0=1为半径A0的一段弧,若A0=1为单位圆的一部分
A = A0 * exp(j*phi0);
W = W0 * exp(-j*psi0);
M = 8;
z = A*(W.^(-(0:M-1)));
zplane([],z.'); % z平面分布
figure
y1 = czt(x,M,W,A); % 利用自定义参数的czt
subplot(311);
plot(abs(y1),'r');
y2 = fft(x); % 等间隔采样的fft
subplot(312);
plot(abs(y2),'b');
A = 1;
M = length(x);
W = exp(j*2*pi/M);
y3 = czt(x,M,W,A); % 特殊情况下的czt=fft
subplot(313);
plot(abs(y3),'b');
结果如下:
从上图可以看出,第一张子图为第二张子图的细节。