Overload List
| # | Signature | Description |
|---|---|---|
| 1 | procedure CZT(const Src: TVec; const Dst: TVec; const State: TCztState); | Computes the chirp z-transform. |
| 2 | procedure CZT(const Src: TVec; k: Integer; const Step: TCplx; const Offset: TCplx; const aResult: TVec); | Result = the chirp z-transform |
| 3 | procedure CZT(const Src: TVec; k: Integer; const aResult: TVec; RStart: Double; RStop: Double); | Result = the chirp z-transform |
| 4 | procedure CZT(const Src: TVec; k: Integer; FStart: Double; FStop: Double; const aResult: TVec; FS: Double; RStart: Double; RStop: Double); | Result = the chirp z-transform over a frequency band |
Overload 1: procedure CZT(const Src: TVec; const Dst: TVec; const State: TCztState);
Computes the chirp z-transform.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TVec | |
| 2 | Dst | TVec | |
| 3 | State | TCztState |
Result: stored in self (calling object)
If the parameters to CZT function do not change between calls, some variables can be pre-computed and stored in to a state variable.
The result is placed in to the Dst variable. The State variable needs to be initialized with a call to CztInit method.
Overload 2: procedure CZT(const Src: TVec; k: Integer; const Step: TCplx; const Offset: TCplx; const aResult: TVec);
Compute the chirp z-transform.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TVec | |
| 2 | k | Integer | |
| 3 | Step | TCplx | |
| 4 | Offset | TCplx | |
| 5 | aResult | TVec |
Result: stored in self (calling object)
Compute the chirp z-transform of Src and place it in aResult. The starting frequency is defined with Offset and frequency step is defined with Step. The final frequency is at Offset + k*Step. k defines the number of frequency bins at which to estimated the amplitude and phase of the frequency. Example for computing the Step and Offset:
Step := Expj(-(FStop - FStart)*2*Pi/(k*FS)); Offset := Expj(2*Pi*FStart/FS);
Overload 3: procedure CZT(const Src: TVec; k: Integer; const aResult: TVec; RStart: Double; RStop: Double);
Compute the chirp z-transform.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TVec | |
| 2 | k | Integer | |
| 3 | aResult | TVec | |
| 4 | RStart | Double | scalar |
| 5 | RStop | Double | scalar |
Result: stored in self (calling object)
Compute the chirp z-transform of Src and place it in aResult. The starting frequency is zero and the stop frequency and FStop is at FS/2. k defines the number of steps within that band. RStart is the starting radius of the circle in the z-domain and RStop is the final radius of the circle in the z-domain.
Overload 4: procedure CZT(const Src: TVec; k: Integer; FStart: Double; FStop: Double; const aResult: TVec; FS: Double; RStart: Double; RStop: Double);
Compute the chirp z-transform over a frequency band.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TVec | |
| 2 | k | Integer | |
| 3 | FStart | Double | scalar |
| 4 | FStop | Double | scalar |
| 5 | aResult | TVec | |
| 6 | FS | Double | scalar |
| 7 | RStart | Double | scalar |
| 8 | RStop | Double | scalar |
Result: stored in self (calling object)
Evaluates the z-transform of Src at k points spaced equally in angle on a spiral contour in the z-plane, placing the complex result in aResult: X[m] = sum_(n=0)^(N-1) x[n] z_m^(-n), z_m = A W^(-m), m=0,...,k-1. The contour parameters follow directly from the arguments: A = R_(start) e^( j 2pi F_(start)/F_s), W = (R_(stop)/R_(start))^(-1/k) e^(-j 2pi (F_(stop)-F_(start))/(k F_s)). So FStart and FStop are the band edges in the units of the sampling frequency FS, k is the number of output bins across the band, and RStart, RStop set the spiral radius at the first and last bin (use R=1 for the unit circle). With k=N, FStart =0, FStop =F_s the result equals the full DFT of Src.
The algorithm (Bluestein, generalized by Rabiner) costs more than the FFT for the full band but can be cheaper for a narrow zoom band or large zero-padding, and unlike the FFT does not require a power-of-two length. aResult is sized to k complex samples of Src's precision.
References:
[1] Discrete-time signal processing, Oppenheim and Schafer, Prentice-Hall, 1989.
[2] Theory and application of digital signal processing, Lawrence R. Rabiner and Bernard Gold. Prentice-Hall, 1975.
Step := Expj(-(FStop - FStart)*2*Pi/(k*FS));
Offset := Expj(2*Pi*FStart/FS);