主要内容

czt

啁啾 Z 变换

说明

y = czt(x,m,w,a) 返回 x 的长度为 m 的啁啾 Z 变换 (CZT),该变换沿 wa 定义的 z 平面上的螺旋轮廓进行,公式为 z = a*w.^-(0:m-1)

使用 mwa 的默认值,czt 返回 x 在单位圆上 m 个等距点的 Z 变换,结果等效于 fft(x) 给出的 x 的离散傅里叶变换 (DFT)。

示例

示例

全部折叠

创建一个长度为 1013 的随机向量 x。使用 czt 计算其 DFT。

rng default
x = randn(1013,1);
y = czt(x);

使用 czt 放大滤波器频率响应的窄带部分。

使用加窗方法设计一个 30 阶低通 FIR 滤波器。指定采样率为 1 kHz,截止频率为 125 Hz。使用一个矩形窗。找到滤波器的传递函数。

fs = 1000;
d = designfilt('lowpassfir','FilterOrder',30,'CutoffFrequency',125, ...
    'DesignMethod','window','Window',@rectwin,'SampleRate',fs);
h = tf(d);

计算滤波器的 DFT 和 CZT。将 CZT 的频率范围限制为 75 至 175 Hz 之间的频带。在每种情况下生成 1024 个采样。

m = 1024;
y = fft(h,m);

f1 = 75;
f2 = 175;
w = exp(-j*2*pi*(f2-f1)/(m*fs));
a = exp(j*2*pi*f1/fs);
z = czt(h,m,w,a);

对变换绘图。放大感兴趣区域。

fn = (0:m-1)'/m;
fy = fs*fn;
fz = (f2-f1)*fn + f1;

plot(fy,abs(y),fz,abs(z))
xlim([50 200])
legend('FFT','CZT')
xlabel('Frequency (Hz)')

Figure contains an axes object. The axes object with xlabel Frequency (Hz) contains 2 objects of type line. These objects represent FFT, CZT.

输入参数

全部折叠

输入信号,指定为向量、矩阵或三维数组。如果 x 是矩阵,则函数变换 x 的列。如果 x 是三维数组,则该函数沿大于 1 的第一个数组维度进行运算。

示例: sin(pi./[4;2]*(0:159))' 指定一个双通道正弦波。

数据类型: single | double
复数支持:

变换长度,指定为正整数标量。

数据类型: single | double

螺旋轮廓点之间的比率,指定为复数标量。

数据类型: single | double
复数支持:

螺旋轮廓初始点,指定为复数标量。

示例: exp(1j*pi/4) 位于 z 平面的单位圆上,并与实轴成 45 度角。

数据类型: single | double
复数支持:

输出参量

全部折叠

啁啾 Z 变换,以向量或矩阵形式返回。

算法

czt 在计算指定啁啾轮廓上的 Z 变换时,使用下一个 2 次幂长度的 FFT 执行快速卷积[1]

参考

[1] Rabiner, Lawrence R., and Bernard Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975.

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

另请参阅

|