liuhuanjun 发表于 2006-8-25 19:55

有关czt

我用czt求出来的序列,画出来怎么是对称得阿
有人能解释一下吗?

yangzj 发表于 2006-8-25 20:32

G = CZT(X, M, W, A)

当W = exp(-j*2*pi/M)时,求得的就是细化了的双边谱,当然就是对称的了.它的频率分辨率(即两条谱线间的间隔就是fs/M,fs为采样频率).
当设W = exp(-j*2*pi/(2*M))时,求得的就是细化了的单边谱,这时频率分辨率变成fs/(2*M).

liuhuanjun 发表于 2006-8-26 10:28

Thanks a lot!

liuhuanjun 发表于 2006-8-26 11:37

原帖由 yangzj 于 2006-8-25 20:32 发表
G = CZT(X, M, W, A)

当W = exp(-j*2*pi/M)时,求得的就是细化了的双边谱,当然就是对称的了.它的频率分辨率(即两条谱线间的间隔就是fs/M,fs为采样频率).
当设W = exp(-j*2*pi/(2*M))时,求得的就是细化了的单边 ...


请问yangzj,W有没有可能即不等于 exp(-j*2*pi/M)也不等于exp(-j*2*pi/(2*M))呢,这个时候应该得到什么谱线

yangzj 发表于 2006-8-26 11:46

CZTChirp z-transform.
    G = CZT(X, M, W, A) is the M-element z-transform of sequence X,
    where M, W and A are scalars which specify the contour in the z-plane
    on which the z-transform is computed.M is the length of the transform,
    W is the complex ratio between points on the contour, and A is the
    complex starting point.More explicitly, the contour in the z-plane
    (a spiral or "chirp" contour) is described by
      z = A * W.^(-(0:M-1))

    The parameters M, W, and A are optional; their default values are
    M = length(X), W = exp(-j*2*pi/M), and A = 1.These defaults
    cause CZT to return the z-transform of X at equally spaced points
    around the unit circle, equivalent to FFT(X).

仔细看一下help.
其实w可以随便设,只是设置不同时,得到的是不同的变化,其物理意义也就不同.
它的墨认值 W = exp(-j*2*pi/M),其实质就是是求其DFT(不同于普通的DFT).

songzy41 发表于 2006-8-28 15:34

原帖由 yangzj 于 2006-8-25 20:32 发表
G = CZT(X, M, W, A)

当W = exp(-j*2*pi/M)时,求得的就是细化了的双边谱,当然就是对称的了.它的频率分辨率(即两条谱线间的间隔就是fs/M,fs为采样频率).

不完全同意yangzj的观点。
1,利用CZT往往是求局部谱线,如果原信号中有单频信号的话,原谱线图中是一个sinc函数,使用CZT后,把sinc函数的谱图细化了,即两条谱线间的间隔变小了,sinc函数原本是一个对称函数,细化后即可看到它的对称性。如果原信号中两信号很接近差一条谱线,在原FFT图中很难区分,到CZT图中便能区分开,同时也不是对称的图,如下图所示。下图是采样频率还是5120,数据长度为4096,f1=431.7和f2=433,上半张图是FFT的结果,下半张图是CZT的结果。

yangzj 发表于 2006-8-28 15:46

原帖由 songzy41 于 2006-8-28 15:34 发表

不完全同意yangzj的观点。
1,利用CZT往往是求局部谱线,如果原信号中有单频信号的话,原谱线图中是一个sinc函数,使用CZT后,把sinc函数的谱图细化了,即两条谱线间的间隔变小了,sinc函数原本是一个对称函数 ...


多谢指点。
以前没用过这个CZT,以为它求的就是整个频谱图,所以我说对于实数信号来说,它肯定是正负频率对称的。
仔细看了这个函数的帮助后,发现通过参数的设置是可以求得局部谱图的,这时,当然是不会对称的了。

但说CZT图能区分两相近频率成分,我觉得不太恰当,因为它并不能把这两个频率拉开,要拉开的话就得用zoom fft了。

songzy41 发表于 2006-8-28 15:52

2,我还不完全同意yangzj关有CZT后的分辨率(两条谱线之间的间隔)为fs/M。尽管在help说明中是这样说的,实际上并不完全如此。
在CZT调用时:
G = CZT(X, M, W, A)
W = exp(-j*2*pi/M1),M1和CZT中的M可能是两个不同的值。因此在CZT中两条谱线间的间隔并不为fs/M(fs为采样频率)。因为CZT往往是求局部谱,常常会M<N,如果按上式计算分辨率不是CZT比FFT还差,但一样可得到比原 FFT更高的分辨率,只要M1>N便可以了。以下给出胡广书《数字信号处理-理讹算法和实现》光盘程序Exa040802:
%-----------------------------------------------------------------
%exa040802_czt.m,   for example 4.8.2
%to test czt.m   
%-----------------------------------------------------------------
% ex040802
clear all;

% 构造三个不同频率的正弦信号的叠加作为试验信号
N=128;
f1=8;f2=8.22;f3=9;fs=40;
stepf=fs/N;
n=0:N-1;
t=2*pi*n/fs;
n1=0:stepf:fs/2-stepf;
x=sin(f1*t)+sin(f2*t)+sin(f3*t);
M=N;
W=exp(-j*2*pi/M);

% A=1时的czt变换
A=1;
Y1=czt(x,M,W,A);
subplot(311)
plot(n1,abs(Y1(1:N/2)));grid on;

% DTFT
Y2=abs(fft(x));
subplot(312)
plot(n1,abs(Y2(1:N/2)));grid on;

% 详细构造A后的czt
M=60;
f0=7.2;
DELf=0.05;
A=exp(j*2*pi*f0/fs);
W=exp(-j*2*pi*DELf/fs);
Y3=czt(x,M,W,A);
n2=f0:DELf:f0+(M-1)*DELf;
subplot(313);plot(n2,abs(Y3));grid on;

在画笫3张图时,czt中M=60,而M1=fs/DELf=800。尽管M<N,但一样得到更高分辨率。

yangzj 发表于 2006-8-28 15:57

原帖由 songzy41 于 2006-8-28 15:52 发表
2,我还不完全同意yangzj关有CZT后的分辨率(两条谱线之间的间隔)为fs/M。尽管在help说明中是这样说的,实际上并不完全如此。
在CZT调用时:
G = CZT(X, M, W, A)
W = exp(-j*2*pi/M1),M1和CZT中的M可能是两 ...


呵呵,多谢。是我看help没看仔细。
CZT的分辨率是根据参数W = exp(-j*2*pi/M1)来定的,此时的分辨率是fs/M1。

orchis_2005 发表于 2007-7-19 08:19

请问czt可以做时频分析吗,
通过变换能获得时频图吗?

huan0918 发表于 2010-5-19 22:20

我用CZT分别细化一个信号的不同起始点,但长度一样的频谱,为什么出来结果时间靠后的幅度比前面的还大?
高手帮帮忙

clear all
clc ;
   
fs=4096;
N=1024;
M=1024;
f1=200;
f2=204;
n=0:1:N-1+280;
e=fs/N;
n1=0:e:(fs/2)-e;
x=70*exp(-2*pi*202.4*0.01*n/fs).*cos(2*pi*202.4*sqrt(1-0.01^2)*n/fs+30*2*pi/180)

figure;
plot(n,x);
xlabel('时间t');
ylabel('value');
title('信号的时域波形');
x1=beltfilter(x,fs,100,0,2048);
a=length(x1)
XK=abs(fft(x1))*2/N;%(80:N+80)
figure;
plot(XK);
%stem(n1,XK(1:(N/2)));
%axis();
title('直接利用FFT变换后的频谱');
w=exp(-j*2*pi*(f2-f1)/(fs*M));
a=exp(j*2*pi*f1/fs);
xk=czt(x1,M,w,a); %(80:N+80)
h=0:1:M-1;
f0=4/M*h+200;
figure;
stem(f0,abs(xk));
axis();
xlabel('频率__f');
ylabel('value');
title('利用CZT变换后的细化频谱');

402144999 发表于 2014-7-28 17:29

页: [1]
查看完整版本: 有关czt