WO2019023220A1 - SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY - Google Patents

SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY Download PDF

Info

Publication number
WO2019023220A1
WO2019023220A1 PCT/US2018/043468 US2018043468W WO2019023220A1 WO 2019023220 A1 WO2019023220 A1 WO 2019023220A1 US 2018043468 W US2018043468 W US 2018043468W WO 2019023220 A1 WO2019023220 A1 WO 2019023220A1
Authority
WO
WIPO (PCT)
Prior art keywords
vector
matrix
czt
iczt
toeplitz
Prior art date
Application number
PCT/US2018/043468
Other languages
French (fr)
Inventor
Volodymyr SUKHOY
Alexander Stoytchev
Original Assignee
Iowa State University Research Foundation, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Iowa State University Research Foundation, Inc. filed Critical Iowa State University Research Foundation, Inc.
Priority to KR1020207004589A priority Critical patent/KR102183973B1/en
Priority to CN201880050406.7A priority patent/CN111033499B/en
Priority to EP18838443.2A priority patent/EP3659052A4/en
Priority to KR1020207033268A priority patent/KR102338456B1/en
Priority to JP2020504169A priority patent/JP6928208B2/en
Publication of WO2019023220A1 publication Critical patent/WO2019023220A1/en
Priority to US16/750,850 priority patent/US20210141856A2/en
Priority to US17/314,982 priority patent/US20210397674A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/02Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S13/00
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/02Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S13/00
    • G01S7/28Details of pulse systems
    • G01S7/285Receivers
    • G01S7/288Coherent receivers
    • G01S7/2883Coherent receivers using FFT processing
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/02Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S13/00
    • G01S7/35Details of non-pulse systems
    • G01S7/352Receivers
    • G01S7/356Receivers involving particularities of FFT processing
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/52Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S15/00
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/52Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S15/00
    • G01S7/523Details of pulse systems
    • G01S7/526Receivers
    • G01S7/527Extracting wanted echo signals
    • G01S7/5273Extracting wanted echo signals using digital techniques
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S7/00Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
    • G01S7/52Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S15/00
    • G01S7/534Details of non-pulse systems
    • G01S7/536Extracting wanted echo signals

Definitions

  • This invention generally relates to the inverse chirp z-transform and more particularly to methods and systems for computing the inverse chirp z-transform in 0(n log ri) time and O(n) memory.
  • the non-zero complex numbers A and W specify the location and the direction of the spiral contour and also the spacing of the sample points on the contour. More specifically, given an N-element input vector x, the CZT computes an -element output vector X, where the k-th element of X is given by
  • the CZT is a linear transform, it can be expressed using a matrix product of the CZT matrix and the input vector. This matrix can be inverted using a standard algorithm. In algorithmic form, however, this process may require up to 0(n 3 ) operations.
  • O(n 2 ) is a lower bound for the computational complexity of any ICZT algorithm that works with a complete n-by-n matrix in memory.
  • an ICZT algorithm must have the same computational complexity as the CZT algorithm, i.e., 0(n log n). This requirement rules out any method that requires storing the transform matrix in memory.
  • Embodiments of the present disclosure describe an efficient 0(n log n) method for computing the ICZT.
  • the method uses generating vectors to represent structured matrices (e.g., diagonal, Vandermonde, Toeplitz, circulant, or skew-circulant matrices) more compactly in O(n) memory.
  • the ICZT can be viewed as a generalization of the inverse fast Fourier transform (IFFT) off the unit circle.
  • IFFT inverse fast Fourier transform
  • the complex parameters A and W of an ICZT describe a logarithmic spiral contour in the complex plane.
  • the ICZT can use contour points off the unit circle that correspond to exponentially growing or exponentially decaying frequency components.
  • Embodiments of the present disclosure also describe a method for improving the numerical accuracy of a CZT or an ICZT for the case when
  • the algorithm was derived by expressing the CZT formula using structured matrix multiplication and then finding a way to invert that formula
  • the essence of the ICZT computation reduces to inverting a specially constructed Vandermonde matrix W. This problem, in turn, reduces to inverting a specially constructed Toeplitz matrix W derived from W.
  • FIGS. 1A-1B depict two examples of logarithmic spiral contours with 32 and 64 points, respectively, where the start of each contour is indicated with an unfilled circle;
  • FIG. 2 is a chart providing an illustration of the numerical accuracy for performing CZT followed by ICZT for contours with shapes like those shown in FIGS 1A- IB but with different number of points, M, and for calculations that use different floatingpoint precisions;
  • FIG. 3 is a chart providing an illustration of the generating vectors and matrix shapes for different types of structured matrices
  • FIGS. 4A-4B give an example that illustrates the difference between the fixed magnitude complex exponentials used by the FFT or the IFFT and the exponentially growing or exponentially decaying complex exponentials that can be used by the CZT or the ICZT, respectively;
  • FIGS. 5A-5D depict examples of logarithmic spiral contours whose points are located outside the unit circle, inside the unit circle, start outside the unit circle and end inside it, and start inside the unit circle and end outside it, respectively;
  • FIGS. 6A-6C depict examples of logarithmic spiral contours whose points are located on the unit circle that span 90 degrees, 180 degrees, and 360 degrees, respectively;
  • FIGS. 7A-7B depict examples of logarithmic spiral contours whose points span two 360-degree revolutions and five 360-degree revolutions, respectively.
  • Embodiments of the present disclosure describe an efficient 0(n log n) ICZT algorithm that implements the ICZT for
  • the ICZT generalizes the inverse fast Fourier transform (IFFT) by making it possible to distribute the sample points on a logarithmic spiral contour in the complex plane instead of the unit circle.
  • IFFT inverse fast Fourier transform
  • FIGS. 1A-1B Two example logarithmic spiral contours are shown in FIGS. 1A-1B. Whenever a sample point is not on the unit circle, the corresponding frequency component is growing or decaying
  • FIGS. 4A-4B show some examples of growing, decaying, and constant- magnitude frequency components used by FFT/IFFT and CZT/ICZT.
  • the ICZT algorithm was derived by expressing the CZT formula as a product of structured matrices and finding a way to invert the matrix equation. More specifically, computing the ICZT reduces to inverting a special case of a Vandermonde matrix W. This can be accomplished by inverting a special case of a Toeplitz matrix derived from W.
  • Structured matrices are matrices that can be described with fewer parameters than their total number of elements. Examples of structured matrices include Toeplitz, Hankel, Vandermonde, and Cauchy matrices. Other examples include circulant, skew- circulant, and DFT matrices. Diagonal matrices can also be viewed as structured matrices.
  • FIG. 3 illustrates the general shape of some of these structured matrices. The examples shown in FIG. 3 are for 3-by-3 matrices. Further, FIG. 3 illustrates the generating vector(s) that can be used to generate each matrix. In most cases, these are denoted with r and c, which specify the first row and the first column of the matrix.
  • This algorithm includes a step of multiplying a Toeplitz matrix by a vector, which can be done in 0(n log n), without storing the full Toeplitz matrix in memory.
  • Appendices C, D and E implement three different algorithms based on these references that can compute this product. Each of these algorithms can be used as a building block of the ICZT algorithm.
  • the Fast Fourier Transform (FFT) algorithm which is stated in Appendix B, is used in each of these three algorithms.
  • this invention is transformative not only because it implements a transform that generalizes the inverse FFT, but also because the new algorithm has the same run-time complexity as the algorithm that it generalizes.
  • Logarithmic spiral contours that can be used with the ICZT include contours whose points are located outside the unit circle, inside the unit circle, start outside the unit circle and end inside it, start inside the unit circle and end outside it. Examples of such contours are shown in FIGS. 5A-5D. Moreover, the contour points may cover partial arcs on the unit circle, e.g., a 90-degree arc, a 180-degree arc, or even a complete 360-degree turn, in which case the contour can be identical to the contour used by the FFT/IFFT. Examples of such contours are shown in FIGS. 6A-6C. Finally, the contour points may even cover multiple 360-degree revolutions. FIGS. 7A-7B show examples with two and five complete revolutions. In general, the number of revolutions may not even be integer. [0031] Expressing the Chirp Z-Transform Using Structured Matrices
  • This example describes the CZT for a special case with four inputs and four outputs using the matrix notation.
  • the CZT is defined using the following formula:
  • the example CZT can be viewed as multiplying the input vector x by a diagonal matrix generated by the negative powers of the complex parameter A and multiplying the resulting vector by the Vandermonde matrix W, which is determined by the complex parameter W.
  • the matrix W has the following form:
  • a and W are the complex parameters for the transform that define the logarithmic spiral contour and the locations of the samples on it.
  • the parameter N is an integer that specifies the size of the input vector x.
  • the parameter Mis an integer that specifies the size of the output vector X.
  • N may not be equal to M That is, the dimensionality of the input may not be equal to the dimensionality of the output.
  • the CZT can be also expressed in matrix form:
  • Formula (2.5) can be restated in the following shortened form: [0043] where Wis the following M-by-N matrix:
  • W is a Vandermonde matrix. That is, each row of W forms a geometric progression. Moreover, the common ratio of each of these progressions is equal to the corresponding integer power of the parameter W.
  • the negative integer powers of A in formula (2.6) scale the columns of the Vandermonde matrix W. Because the matrix W is a special case of a Vandermonde matrix, it can be expressed as a product of diagonal matrices and a Toeplitz matrix as described below.
  • the matrix Wis a special case of a Vandermonde matrix, it can be expressed as a product of two diagonal matrices and a Toeplitz matrix It is possible to express the power of the parameter Win each element of the matrix fusing the following equation:
  • Equation (2.8) implies that the right-hand side of (2.4) can be expressed
  • W is a Special case of a Vandermonde matrix defined
  • T be a 4-by -4 Toeplitz matrix. That is,
  • a, b, c, d,f, g, and h are the seven complex numbers that generate the matrix T.
  • u (uo, ui, u 2 , u 3 ) is a four-element vector such that uo ⁇ 0
  • v (vo, vi, v 2 , v 3 ) is another four-element vector such that V3 ⁇ 0.
  • formula (3.2) expresses the inverse of a 4-by-4 Toeplitz matrix T using four structured matrices: 1) a lower-triangular Toeplitz matrix generated by the vector u, 2) an upper-triangular Toeplitz matrix generated by the reverse of the vector v, 3) a lower-triangular Toeplitz matrix generated by the vector (0, vo , vi, v 2 ), which is obtained by shifting v to the right by one element, and 4) an upper-triangular Toeplitz matrix generated by the vector (0, u 3 , u 2 , ui), which is obtained by shifting the reverse of u to the right by one element.
  • the inverse matrix T -1 of a Toeplitz matrix T may not be Toeplitz.
  • the Gohberg-Semencul formula makes it possible to express T -1 using upper- triangular and lower-triangular Toeplitz matrices. [0061] That is, the Gohberg-Semencul formula states that there exist a vector and a vector that satisfy the following matrix
  • the inverse matrix T -1 can be viewed as a structured matrix that is generated by the vector u and the vector v. This analogy extends to multiplying T -1 by a vector. If the generating vectors u and v are determined, then the product of the matrix T -1 and a vector can be computed in 0(n log n) by implementing (3.4) using structured matrix multiplication.
  • Equation (2.13) showed that the CZT can be reduced to a sequence of matrix- vector multiplications where all matrices are diagonal except for which is the following Toeplitz matrix:
  • the vector v is equal to the last column of W ' , i.e.,
  • the vector v is equal to the reverse of the vector u, [0070] In other words, only the vector u needs to be determined to be able to multiply the inverse matrix by a vector using structured matrix multiplication.
  • n ⁇ .
  • n ⁇ .
  • the inverse matrix is also a 1-by-l matrix that consists of a single number 1, i.e.,
  • W is a 2-by-2 matrix that is specified by the following
  • eo denotes a vector in which the first element is set to one and the remaining elements are set to zero, i.e.,
  • the dot-product of the first row of and the vector u has to be equal to 1 and the dot product of the second row of and u has to be equal to 0.
  • the linear system (4.13) can be expressed in terms of the four elements of and the two elements of u. This leads to the following expanded form of (4.13):
  • the vector v can be obtained by reversing the elements of u, i.e.
  • a closed-form expression for the inverse matrix can be derived by combining the expressions for u and v. That is,
  • the Gohberg-Semencul formula can be verified using the following sequence of matrix transformations. It starts from the difference between the left- hand side and the right-hand side of the formula stated in (3.4) and shows that this difference is equal to zero:
  • the inverse matrix is also a 3-by-3 matrix, but it is no longer Toeplitz, in contrast to the 2-by-2 case.
  • Let u be the first column of i.e.,
  • eo denotes a column vector that consists of three elements instead of two elements.
  • the first element of eo is equal to 1.
  • the remaining two elements of eo are equal to 0.
  • This linear system can also be expressed in scalar form using a system of three equations with three unknowns.
  • the left-hand side of each of these three equations is equal to a dot product between a row of and the vector u.
  • the right-hand side is equal to the corresponding element of e 0 . More formally,
  • the inverse matrix has the following form
  • the value of ut can be computed in 0(1) using precomputed values of the products of the polynomials that appear in the denominator of the right-hand side of (4.36). These values are computed in a separate loop, which runs in 0(n).
  • the formula shows how to compute the CZT input vector x from its output vector X.
  • This equation was derived by inverting the diagonal matrices in the forward transform formula (2.13) and replacing the matrix with its inverse
  • Each matrix in formula (4.37) is either a diagonal matrix or it can be expressed as a difference of products of Toeplitz matrices.
  • Implementing the formula leads to an 0(n log ri) algorithm for computing the ICZT, which is given in Algorithm 5.2, below.
  • the algorithm performs all matrix computations efficiently by using the generating vectors to compute the results of all matrix-vector operations without storing any intermediate matrices in memory. It requires 0(n) memory to run.
  • equation (4.40) has the following form:
  • the matrix is equal to the transpose of the matrix and the matrix is equal to the transpose of the matrix
  • the inverse matrix can be expressed in the following simplified form:
  • both can be generated from the elements of the vector u.
  • equation (4.43) is computed efficiently by exploiting the structure of these matrices. As described above, these four Toeplitz matrices are not constructed explicitly.
  • Algorithm 5.1 gives the pseudo-code for the CZT algorithm.
  • the algorithm uses the convolution based algorithm TOEPLITZMULTIPLYC, which is described in Appendix E, to multiply a Toeplitz matrix by a vector.
  • Other algorithms for computing the product of a Toeplitz matrix and a vector can be used instead.
  • TOEPLUZMULTIPLYE described in Appendix C and TOEPLITZMULTIPLYP described in Appendix D can replace TOEPLITZMULTIPLYC in Algorithm 5.1 without changing its computational complexity.
  • FIG. 2 gives the numerical accuracy of the ICZT as a function of the transform size M and the number of bits used by the floating-point numbers during the computations.
  • the value of A was set to 1.1 for all rows of FIG. 2.
  • the value of W was determined using the formula The numerical accuracy was computed by performing the
  • Algorithm 5.3 gives the pseudo-code for the ICZT-RECT algorithm, which implements the inverse algorithm for the case when N ⁇ M. This algorithm calls Algorithm 5.2 with the second parameter set to M and then returns only the first N elements of its output vector.
  • the ICZT algorithm is used in applications for generating or analyzing the data received from or sent to radar-based sensors.
  • the ICZT algorithm is used in applications for generating or analyzing the data received from or sent to sonar sensors.
  • the ICZT algorithm is used in applications for generating or analyzing the data received from or sent to other range-based sensors.
  • the ICZT algorithm is used in hardware
  • the hardware implementation is a variety of systems including a memory device and a processor, e.g., a personal computer, a chip (e.g., system-on-a-chip), a system comprising an application-specific integrated circuit (ASIC), a system comprising a graphics processing unit (GPU), or a field-programmable gate array (FPGA).
  • a processor e.g., a personal computer, a chip (e.g., system-on-a-chip), a system comprising an application-specific integrated circuit (ASIC), a system comprising a graphics processing unit (GPU), or a field-programmable gate array (FPGA).
  • the ICZT algorithm is used in improving the speed of applications that need to compute the ICZT by replacing slower methods that invert the matrix explicitly or solve an explicitly -formulated linear system. Additionally, the ICZT algorithm can replace the conventionally used FFT and IFFT in whole or in part.
  • the frequency domain vector can be modified such that the time domain vector returned by the ICZT is different from the time domain vector used to generate the frequency domain vector. For example, an operation can be performed on the frequency domain vector, such as filtering certain elements or frequencies from the vector.
  • the ICZT algorithm is used in medical imaging applications, e.g., CT, PET, or MRI. Additionally, the ICZT algorithm is used in applications in signal processing, signal analysis, signal synthesis, speech and audio processing, and image processing.
  • the input vector of the CZT or FFT may be a time-domain vector derived from an audio or image signal, such as by sampling the signal.
  • the output vector of the CZT or FFT may then be a frequency domain vector representation of those signals.
  • Appendix A Reversing the Direction of the Logarithmic Spiral Contour to Improve the Numerical Accuracy of the CZT and the ICZT
  • This appendix describes alternative versions of the CZT and the ICZT algorithms that improve the numerical accuracy of the computed transforms. This is achieved by reversing the direction of the chirp contour when
  • Algorithm A.1 gives the pseudo-code for the alternative version of the CZT algorithm that performs contour reversal when
  • Algorithm A.2 gives the pseudocode for the alternative version of the ICZT algorithm that also performs contour reversal in that case.
  • Appendix B FFT and Inverse FFT Algorithms
  • Algorithm B.1 gives pseudo-code for the Fast Fourier Transform (FFT).
  • Algorithm B.2 gives pseudo-code for the inverse Fast Fourier Transform (IFFT). Both the FFT and the IFFT run in 0(n log n).
  • Appendix C Multiplying a Toeplitz Matrix by a Vector
  • This appendix describes a popular method for multiplying a Toeplitz matrix by a vector. Let A be a n x n Toeplitz matrix and let x be a vector. The matrix A is specified by its first row r and its first column c, where it is assumed that ro is equal to Co. The example in this appendix assumes that n is a power of 2. The approach, however, can be modified to work for other values of n. More formally,
  • the product of can be computed using an FFT-based algorithm in 0(n log ri). That is, the goal is to compute a vector ⁇ of length 2n, which is equal to More formally,
  • This product can be computed using the DFT and the inverse DFT, which follows from the circular convolution theorem.
  • each element (Bv) k of the product is equal to the k-t element in the circular convolution of b and v. That is,
  • the DFT and the inverse DFT can be computed using the FFT and the inverse FFT, i.e.,
  • the product of an n-by-n Toeplitz matrix and a vector can be computed using the following six steps: 1) go from Toeplitz to circulant by concatenating the first column, a single zero, and the reverse of the last n-1 elements of the first row; 2) pad the vector with n zeros at the end; 3) compute the DFT of the first column of the circulant matrix; 4) compute the DFT of the padded vector; 5) multiply the two DFTs elementwise; 6) compute the inverse DFT of the elementwise product; and 7) return the first n elements of the result vector computed by the inverse DFT.
  • Algorithm C.1 gives the pseudo-code for the algorithm described above.
  • the computational complexity of this algorithm is 0(n log n).
  • the name of the function is TOEPLITZMULTIPLYE, where the ⁇ ' abbreviates 'embedding'.
  • FCIRCULANTMULTIPLY does O(n) more work than the sequence of FFT computations because it has to compute for each
  • Appendix D Toeplitz Vector Product Using Pustylnikov's Decomposition
  • An algorithm for multiplying a Toeplitz matrix by a vector can be formulated using Pustylnikov's decomposition. This algorithm does not embed a Toeplitz matrix into a circulant matrix as described in Appendix C. Instead, this appendix describes a different version of TOEPLITZMULTIPLY.
  • A' is a circulant matrix
  • these two matrices have the following form:
  • Algorithm D.1 gives the pseudo-code for the algorithm described above.
  • the name of the function is TOEPLITZMULTIPLYP, where 'P' abbreviates 'Pustylnikov'. Lines 27 and 28 call Algorithm D.2, which is described below. The algorithm runs in 0(n log ri) time.
  • Algorithm D.2 gives the pseudo-code for the function FCIRCULANTMULTIPLY (for multiplying an f-circulant matrix by a vector), which was used in Algorithm D.l. It runs in 0(n log n).
  • Appendix E Toeplitz Vector Product with FFT-based Convolution
  • Algorithm E.1 shows the pseudo-code for yet another algorithm for multiplying a Toeplitz matrix by a vector.
  • the function name in this case is TOEPLITZMULTIPLYC, where 'C abbreviates convolution.
  • the computational complexity of the algorithm is 0(n log ri). This algorithm can be interpreted as a form of circulant embedding, similarly to the approach described in Appendix C.
  • Algorithm E.2 gives the pseudo-code for an FFT-based convolution algorithm, which is an 0(n log ri) method for computing discrete convolution. It was used in Algorithm E.l.

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

Embodiments of the present disclosure describe an efficient O(n log n) method that implements the Inverse Chirp Z-Transform (ICZT). This transform is the inverse of the well-known forward Chirp Z-Transform (CZT), which generalizes the fast Fourier transform (FFT) by allowing the sampling points to fall on a logarithmic spiral contour instead of the unit circle. Thus, the ICZT can be viewed as a generalization of the inverse fast Fourier transform (IFFT).

Description

SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY
FIELD OF THE INVENTION
[0001] This invention generally relates to the inverse chirp z-transform and more particularly to methods and systems for computing the inverse chirp z-transform in 0(n log ri) time and O(n) memory.
BACKGROUND OF THE INVENTION
[0002] The Chirp Z-Transform (CZT) extends the discrete Fourier transform (DFT) by allowing the samples to be located on a logarithmic spiral contour instead of the unit circle. More specifically, the transform distributes the samples along a logarithmic spiral contour that is defined by the formula A W-k, where k = 0, 1, 2, ... , M-\ . The non-zero complex numbers A and W specify the location and the direction of the spiral contour and also the spacing of the sample points on the contour. More specifically, given an N-element input vector x, the CZT computes an -element output vector X, where the k-th element of X is given by
Figure imgf000002_0001
[0003] An efficient algorithm that can compute the forward chirp z-transform has previously been described. That algorithm runs in 0(n log ri) time, where n is the size of the transform. Because the number of inputs N and the number of outputs M can be different, in the most general case the computational complexity of the CZT algorithm is determined by n = max( N).
[0004] An efficient CZT algorithm can be derived using an index substitution that was originally proposed by Bluestein in "A linear filtering approach to the computation of discrete Fourier transform," IEEE Transactions on Audio and Electroacoustics, 18(4):451- 455, 1970, which is incorporated in its entirety herein by reference, to express the transform using fast convolutions. Various useful optimizations have been proposed for the CZT algorithm. Nevertheless, its computational complexity remains fixed at 0(n log ri). [0005] The Inverse Chirp Z-Transform (ICZT) is the inverse of the chirp z-transform (CZT). That is, the ICZT maps the outputs of the CZT back to the inputs. Because the CZT is a linear transform, it can be expressed using a matrix product of the CZT matrix and the input vector. This matrix can be inverted using a standard algorithm. In algorithmic form, however, this process may require up to 0(n3) operations.
[0006] Even though there are efficient matrix inversion algorithms that run faster than O(n3), at least n2 operations are necessary to access each element of an n-by-n matrix. Thus, O(n2) is a lower bound for the computational complexity of any ICZT algorithm that works with a complete n-by-n matrix in memory.
[0007] To be efficient, an ICZT algorithm must have the same computational complexity as the CZT algorithm, i.e., 0(n log n). This requirement rules out any method that requires storing the transform matrix in memory.
[0008] Several attempts to derive an efficient ICZT algorithm have been made. In one case (described in Frickey, "Using the inverse chirp-z transform for time-domain analysis of simulated radar signals," Technical report, Idaho National Engineering Lab., Idaho Falls, ID, 1995, incorporated in its entirety herein by reference), a modified version of the forward CZT algorithm, in which the logarithmic spiral contour was traversed in the opposite direction, was described as the ICZT algorithm. However, this method does not really invert the CZT. It works only in some special cases, e.g., when A = 1 and
Figure imgf000003_0002
That is, in the cases when the CZT reduces to the DFT. In the general case, i.e., when
Figure imgf000003_0001
this method generates a transform that does not invert the CZT.
BRIEF SUMMARY OF THE INVENTION
[0009] Embodiments of the present disclosure describe an efficient 0(n log n) method for computing the ICZT. The method uses generating vectors to represent structured matrices (e.g., diagonal, Vandermonde, Toeplitz, circulant, or skew-circulant matrices) more compactly in O(n) memory. The ICZT can be viewed as a generalization of the inverse fast Fourier transform (IFFT) off the unit circle. In other words, the complex parameters A and W of an ICZT describe a logarithmic spiral contour in the complex plane. Unlike IFFT, the ICZT can use contour points off the unit circle that correspond to exponentially growing or exponentially decaying frequency components. Embodiments of the present disclosure also describe a method for improving the numerical accuracy of a CZT or an ICZT for the case when | W\ < 1, which is given in Appendix A.
[0010] To the best of their knowledge, the inventors believe that this disclosure is the first description of an efficient ICZT algorithm. In particular, a working algorithm is described as well as its derivation. Further, the accuracy of the algorithm is verified using automated test cases.
[0011] The algorithm was derived by expressing the CZT formula using structured matrix multiplication and then finding a way to invert that formula The essence of the ICZT computation reduces to inverting a specially constructed Vandermonde matrix W. This problem, in turn, reduces to inverting a specially constructed Toeplitz matrix W derived from W.
[0012] Other aspects, objectives and advantages of the invention will become more apparent from the following detailed description when taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The accompanying drawings incorporated in and forming a part of the specification illustrate several aspects of the present invention and, together with the description, serve to explain the principles of the invention. In the drawings:
[0014] FIGS. 1A-1B depict two examples of logarithmic spiral contours with 32 and 64 points, respectively, where the start of each contour is indicated with an unfilled circle;
[0015] FIG. 2 is a chart providing an illustration of the numerical accuracy for performing CZT followed by ICZT for contours with shapes like those shown in FIGS 1A- IB but with different number of points, M, and for calculations that use different floatingpoint precisions;
[0016] FIG. 3 is a chart providing an illustration of the generating vectors and matrix shapes for different types of structured matrices;
[0017] FIGS. 4A-4B give an example that illustrates the difference between the fixed magnitude complex exponentials used by the FFT or the IFFT and the exponentially growing or exponentially decaying complex exponentials that can be used by the CZT or the ICZT, respectively;
[0018] FIGS. 5A-5D depict examples of logarithmic spiral contours whose points are located outside the unit circle, inside the unit circle, start outside the unit circle and end inside it, and start inside the unit circle and end outside it, respectively;
[0019] FIGS. 6A-6C depict examples of logarithmic spiral contours whose points are located on the unit circle that span 90 degrees, 180 degrees, and 360 degrees, respectively;
[0020] FIGS. 7A-7B depict examples of logarithmic spiral contours whose points span two 360-degree revolutions and five 360-degree revolutions, respectively.
[0021] While the invention will be described in connection with certain preferred embodiments, there is no intent to limit it to those embodiments. On the contrary, the intent is to cover all alternatives, modifications and equivalents as included within the spirit and scope of the invention as defined by the appended claims.
DETAILED DESCRIPTION OF THE INVENTION
[0022] Embodiments of the present disclosure describe an efficient 0(n log n) ICZT algorithm that implements the ICZT for
Figure imgf000005_0001
The ICZT generalizes the inverse fast Fourier transform (IFFT) by making it possible to distribute the sample points on a logarithmic spiral contour in the complex plane instead of the unit circle. Two example logarithmic spiral contours are shown in FIGS. 1A-1B. Whenever a sample point is not on the unit circle, the corresponding frequency component is growing or decaying
exponentially. FIGS. 4A-4B show some examples of growing, decaying, and constant- magnitude frequency components used by FFT/IFFT and CZT/ICZT.
[0023] The ICZT algorithm was derived by expressing the CZT formula as a product of structured matrices and finding a way to invert the matrix equation. More specifically, computing the ICZT reduces to inverting a special case of a Vandermonde matrix W. This can be accomplished by inverting a special case of a Toeplitz matrix
Figure imgf000006_0001
derived from W.
[0024] Structured matrices are matrices that can be described with fewer parameters than their total number of elements. Examples of structured matrices include Toeplitz, Hankel, Vandermonde, and Cauchy matrices. Other examples include circulant, skew- circulant, and DFT matrices. Diagonal matrices can also be viewed as structured matrices. FIG. 3 illustrates the general shape of some of these structured matrices. The examples shown in FIG. 3 are for 3-by-3 matrices. Further, FIG. 3 illustrates the generating vector(s) that can be used to generate each matrix. In most cases, these are denoted with r and c, which specify the first row and the first column of the matrix.
[0025] Gohberg and Semencul showed that the inverse of a Toeplitz matrix can be expressed using a difference of two products of Toeplitz matrices. This work can be found in I. Gohberg et al, "On the inversion of finite Toeplitz matrices and their continuous analogs," Mat. issled, 2(l):201-233, 1972 and William Trench, "An algorithm for inversion of finite Toeplitz matrices," Journal of the Society for Industrial and Applied Mathematics, 12(3):515-522, 1964, both of the references are incorporated in their entirety herein by reference. In the literature, this result is often referred to as the "Gohberg-Semencul formula." The four matrices in this formula, which are either upper-triangular or lower- triangular Toeplitz, are generated by two vectors u and v. In the case of the ICZT, the Toeplitz matrix to be inverted is also symmetric. This leads to a simplified version of the Gohberg-Semencul formula that expresses the inverse using only one generating vector, i.e., using only the vector u. [0026] The inventors have determined that in the ICZT case it is possible to derive a formula that defines the generating vector u as a function of the complex number W. This formula led to an efficient ICZT algorithm. This algorithm includes a step of multiplying a Toeplitz matrix by a vector, which can be done in 0(n log n), without storing the full Toeplitz matrix in memory. Appendices C, D and E implement three different algorithms based on these references that can compute this product. Each of these algorithms can be used as a building block of the ICZT algorithm. The Fast Fourier Transform (FFT) algorithm, which is stated in Appendix B, is used in each of these three algorithms.
[0027] Broader Impacts
[0028] The discrete Fourier transform (DFT) and its efficient implementation using the fast Fourier transform (FFT) are deeply embedded in a huge variety of modern-day applications. Because the CZT is a generalization of the DFT and the ICZT is a generalization of the inverse DFT, the number of potential applications of this invention is very large. So far, only the CZT algorithm had the same computational complexity as the FFT, i.e., 0(n log n). This disclosure introduces an ICZT algorithm that has the same complexity as the inverse FFT (IFFT), which is also 0(n log ri).
[0029] In other words, this invention is transformative not only because it implements a transform that generalizes the inverse FFT, but also because the new algorithm has the same run-time complexity as the algorithm that it generalizes.
[0030] Logarithmic spiral contours that can be used with the ICZT include contours whose points are located outside the unit circle, inside the unit circle, start outside the unit circle and end inside it, start inside the unit circle and end outside it. Examples of such contours are shown in FIGS. 5A-5D. Moreover, the contour points may cover partial arcs on the unit circle, e.g., a 90-degree arc, a 180-degree arc, or even a complete 360-degree turn, in which case the contour can be identical to the contour used by the FFT/IFFT. Examples of such contours are shown in FIGS. 6A-6C. Finally, the contour points may even cover multiple 360-degree revolutions. FIGS. 7A-7B show examples with two and five complete revolutions. In general, the number of revolutions may not even be integer. [0031] Expressing the Chirp Z-Transform Using Structured Matrices
[0032] Example 4-by-4 CZT Expressed in Matrix Form
[0033] This example describes the CZT for a special case with four inputs and four outputs using the matrix notation. In this case, the CZT is defined using the following formula:
Figure imgf000008_0002
[0034] Let x = (xo, xi, x2, 3)T denote the CZT input vector and X = (Xo, Xi, X2, X3)T denote the output vector. Using these two vectors, the 4-by-4 CZT can also be expressed using the following matrix formula:
Figure imgf000008_0001
[0035] That is, the example CZT can be viewed as multiplying the input vector x by a diagonal matrix generated by the negative powers of the complex parameter A and multiplying the resulting vector by the Vandermonde matrix W, which is determined by the complex parameter W.
[0036] In this example, the matrix W has the following form:
Figure imgf000009_0001
[0037] Inverting the matrix Pleads to the ICZT.
[0038] Expressing the CZT Using the Vandermonde Matrix W
[0039] In the general case, the CZT is typically defined using the following formula:
Figure imgf000009_0003
[0040] In this formula, A and W are the complex parameters for the transform that define the logarithmic spiral contour and the locations of the samples on it. The parameter N is an integer that specifies the size of the input vector x. Finally, the parameter Mis an integer that specifies the size of the output vector X. In general, N may not be equal to M That is, the dimensionality of the input may not be equal to the dimensionality of the output.
[0041] The CZT can be also expressed in matrix form:
Figure imgf000009_0002
[0042] Formula (2.5) can be restated in the following shortened form:
Figure imgf000009_0004
[0043] where Wis the following M-by-N matrix:
Figure imgf000010_0001
[0044] It can be seen that W is a Vandermonde matrix. That is, each row of W forms a geometric progression. Moreover, the common ratio of each of these progressions is equal to the corresponding integer power of the parameter W.
[0045] The negative integer powers of A in formula (2.6) scale the columns of the Vandermonde matrix W. Because the matrix W is a special case of a Vandermonde matrix, it can be expressed as a product of diagonal matrices and a Toeplitz matrix
Figure imgf000010_0003
as described below.
[0046] Deriving the Toeplitz Matrix
Figure imgf000010_0004
from the Vandermonde Matrix W
[0047] Because the matrix Wis a special case of a Vandermonde matrix, it can be expressed as a product of two diagonal matrices and a Toeplitz matrix
Figure imgf000010_0005
It is possible to express the power of the parameter Win each element of the matrix fusing the following equation:
Figure imgf000010_0002
Equation (2.8) implies that the right-hand side of (2.4) can be expressed
Figure imgf000011_0001
[0049] The terms in the last formula can be rearranged so that it can be mapped to matrix products more easily:
Figure imgf000011_0003
[0050] The term maps to an M-by-M diagonal matrix P. The term
Figure imgf000011_0004
Figure imgf000011_0005
maps to the product of two N-by-N diagonal matrices Q and A. Finally, the term
Figure imgf000011_0006
maps to an -by-N Toeplitz matrix
Figure imgf000011_0007
which is shown below:
Figure imgf000011_0002
[0051] This implies that a product of the matrix
Figure imgf000011_0008
and a vector can be efficiently computed using one of several 0(n log ri) algorithms that implement this operation (see Appendices C, D, and E). In other words, Equation (2.10) has the following matrix form:
Figure imgf000012_0001
in which all matrix-vector products can be computed in 0(n log n), where n = max( , N).
[0052] To summarize, the CZT algorithm can be viewed as an efficient implementation of the following matrix equation:
Figure imgf000012_0002
where
Figure imgf000012_0003
W is a Special case of a Vandermonde matrix defined
Figure imgf000012_0004
in (2.7), and
Figure imgf000012_0006
is a special case of a Toeplitz matrix defined in (2.11). As described previously, x is the input vector to the CZT and X is the output vector from the CZT.
[0053] Expressing the Inverse of a Toeplitz Matrix
[0054] The Gohberg-Semencul Formula for the 4-by-4 Case
[0055] Let T be a 4-by -4 Toeplitz matrix. That is,
Figure imgf000012_0005
where a, b, c, d,f, g, and h are the seven complex numbers that generate the matrix T.
[0056] The Gohberg-Semencul formula states that a non-singular 4-by -4 Toeplitz matrix T can be inverted using the following equation:
Figure imgf000013_0002
where u = (uo, ui, u2, u3) is a four-element vector such that uo≠ 0 and v = (vo, vi, v2, v3) is another four-element vector such that V3≠ 0. These two vectors are determined by the numbers a, b, c, d,f, g, and h that generate the matrix T. However, expressing them explicitly as functions of the seven numbers that generate T can be difficult.
[0057] To summarize, formula (3.2) expresses the inverse of a 4-by-4 Toeplitz matrix T using four structured matrices: 1) a lower-triangular Toeplitz matrix
Figure imgf000013_0003
generated by the vector u, 2) an upper-triangular Toeplitz matrix
Figure imgf000013_0004
generated by the reverse of the vector v, 3) a lower-triangular Toeplitz matrix
Figure imgf000013_0005
generated by the vector (0, vo , vi, v2), which is obtained by shifting v to the right by one element, and 4) an upper-triangular Toeplitz matrix generated by the vector (0, u3, u2, ui), which is obtained by shifting the reverse of u to the right by one element.
[0058] The General Case of the Gohberg-Semencul Formula
[0059] Let T be a n-by-n Toeplitz matrix generated by the vector r = (ro, n, r2, ... ,rn-i) that specifies its first row and by the vector c =(co, ci, c2, ... , cn-i) that specifies its first column. It is assumed that ro =co. More formally,
Figure imgf000013_0001
[0060] The inverse matrix T-1 of a Toeplitz matrix T may not be Toeplitz.
Nevertheless, the Gohberg-Semencul formula makes it possible to express T-1 using upper- triangular and lower-triangular Toeplitz matrices. [0061] That is, the Gohberg-Semencul formula states that there exist a vector
Figure imgf000014_0002
and a vector that satisfy the following matrix
Figure imgf000014_0003
equation:
Figure imgf000014_0001
[0062] In other words, the inverse matrix T-1 can be viewed as a structured matrix that is generated by the vector u and the vector v. This analogy extends to multiplying T-1 by a vector. If the generating vectors u and v are determined, then the product of the matrix T-1 and a vector can be computed in 0(n log n) by implementing (3.4) using structured matrix multiplication.
[0063] Expressing the ICZT Using Structured Matrices
[0064] Equation (2.13) showed that the CZT can be reduced to a sequence of matrix- vector multiplications where all matrices are diagonal except for
Figure imgf000014_0004
which is the following Toeplitz matrix:
Figure imgf000015_0001
[0065] This implies that the ICZT can be viewed as a product of diagonal matrices, the inverse matrix and a vector (see formula (2.13)).
Figure imgf000015_0010
[0066] Let u and v be the two vectors that generate
Figure imgf000015_0009
using the Gohberg-Semencul formula, i.e.,
Figure imgf000015_0002
[0067] Because the matrix
Figure imgf000015_0006
is symmetric, its inverse
Figure imgf000015_0007
is also symmetric. The formula for
Figure imgf000015_0011
is a special case of the Gohberg-Semencul formula. Inspection of the special cases of the inverse matrix
Figure imgf000015_0012
for the first several values of n suggested making three useful assumptions. First, the vector u is equal to the first column of
Figure imgf000015_0008
More formally,
Figure imgf000015_0003
[0068] Second, the vector v is equal to the last column of W' , i.e.,
Figure imgf000015_0004
[0069] Third, the vector v is equal to the reverse of the vector u,
Figure imgf000015_0005
[0070] In other words, only the vector u needs to be determined to be able to multiply the inverse matrix
Figure imgf000016_0007
by a vector using structured matrix multiplication.
[0071] One approach to deriving an explicit formula for computing the vector u is to derive it from special cases for the first several values of n. If this induction is successful, then it should be possible to use the resulting formula for each finite n. Because u
determines v, this is sufficient to formulate the ICZT algorithm using the Gohberg- Semencul formula and structured matrix multiplication.
[0072] Special Cases of the Formula for Inverting the Toeplitz Matrix W
[0073] Special Case for n = 1
[0074] Suppose that n = \. Then,
Figure imgf000016_0006
is a 1-by-l matrix that consists of a single number, which is equal to 1. More formally,
Figure imgf000016_0001
[0075] This implies that the inverse matrix
Figure imgf000016_0003
is also a 1-by-l matrix that consists of a single number 1, i.e.,
Figure imgf000016_0004
[0076] The first and last row of
Figure imgf000016_0005
are identical: both consist of a single element that is equal to 1. More formally,
Figure imgf000016_0002
[0077] This leads to a degenerate special case of the Gohberg-Semencul formula:
Figure imgf000017_0001
Special Case for n = 2
Suppose that n = 2. Then, W is a 2-by-2 matrix that is specified by the following
Figure imgf000017_0002
which is well-defined for each
Figure imgf000017_0009
[0080] In this case, the inverse matrix
Figure imgf000017_0008
is also a 2-by-2 matrix, which implies that its first column u is a two-element vector, i.e., u = (uo, ui)r Its elements can be expressed as a function of W by solving the following linear system:
Figure imgf000017_0003
[0081] In this formula, eo denotes a vector in which the first element is set to one and the remaining elements are set to zero, i.e.,
Figure imgf000017_0004
[0082] In other words, the dot-product of the first row of
Figure imgf000017_0005
and the vector u has to be equal to 1 and the dot product of the second row of
Figure imgf000017_0007
and u has to be equal to 0.
[0083] The linear system (4.13) can be expressed in terms of the four elements of
Figure imgf000017_0006
and the two elements of u. This leads to the following expanded form of (4.13):
Figure imgf000018_0001
The previous equation can also be viewed as a system of two scalar linear
Figure imgf000018_0002
[0085] Both of these equations are well-defined whenever W≠ 0.
[0086] The term
Figure imgf000018_0003
can be subtracted from both sides of (4.17), which leads to a formula for the value of ui as a function of W and uo:
Figure imgf000018_0004
[0087] The right-hand side of the previous equation can be plugged into (4.16). This results in an equation that depends only on uo and W. More formally,
Figure imgf000018_0005
[0088] Multiplying both sides of the previous equation by
Figure imgf000018_0006
leads to a formula for the value of uo as a function of W:
Figure imgf000019_0003
[0089] Plugging this value into the right-hand side of (4.18) results in a formula that expresses the value of ui as a function of W. More formally,
Figure imgf000019_0004
[0090] To summarize, in the 2-by-2 case a column vector u that specifies the first column of the inverse matrix
Figure imgf000019_0007
can be expressed as the following function of the parameter W:
Figure imgf000019_0001
[0091] The vector v can be obtained by reversing the elements of u, i.e.
Figure imgf000019_0005
[0092] A closed-form expression for the inverse matrix
Figure imgf000019_0006
can be derived by combining the expressions for u and v. That is,
Figure imgf000019_0002
[0093] In this special case, the Gohberg-Semencul formula can be verified using the following sequence of matrix transformations. It starts from the difference between the left- hand side and the right-hand side of the formula stated in (3.4) and shows that this difference is equal to zero:
Figure imgf000020_0001
[0094] Special Case for n = 3
[0095] In this special case,
Figure imgf000020_0004
is a 3-by-3 Toeplitz matrix. Each element of
Figure imgf000020_0005
is a function of the transform parameter W. More formally,
Figure imgf000020_0002
[0096] The inverse matrix
Figure imgf000020_0006
is also a 3-by-3 matrix, but it is no longer Toeplitz, in contrast to the 2-by-2 case. Let u be the first column of
Figure imgf000020_0007
i.e.,
Figure imgf000020_0003
[0097] Similarly to the 2-by-2 case, the vector u is a solution to the following linear system:
Figure imgf000021_0002
[0098] In contrast to the previous case, however, in this case eo denotes a column vector that consists of three elements instead of two elements. The first element of eo is equal to 1. The remaining two elements of eo are equal to 0. In other words,
Figure imgf000021_0003
[0099] The linear system (4.28) can be expressed in terms of the nine elements that constitute and of the three elements that constitute u. A result of this expansion is shown below:
Figure imgf000021_0001
[0100] This linear system can also be expressed in scalar form using a system of three equations with three unknowns. The left-hand side of each of these three equations is equal to a dot product between a row of
Figure imgf000021_0005
and the vector u. The right-hand side is equal to the corresponding element of e0. More formally,
Figure imgf000021_0004
[0101] Solving this system of linear equations leads to a formula that expresses the vector u as a function of the parameter W, which is shown below:
Figure imgf000022_0001
[0102] The inverse matrix
Figure imgf000022_0006
has the following form
Figure imgf000022_0002
[0103] Note that the vector v specifies the last column of
Figure imgf000022_0005
and it is equal to the reverse of the vector u, which specifies the first column of the matrix. In other words, the previous formula confirms the three assumptions (4.4), (4.5), and (4.6).
[0104] Repeating this process for other values of n allows us to derive the general formula that determines u. The next section states this formula.
[0105] General Formula for Inverting the Toeplitz Matrix
Figure imgf000022_0004
[0106] In the general case, the elements of the vector u, which specifies the first column of can be computed using the following formula:
Figure imgf000022_0003
[0107] For each k, the value of ut can be computed in 0(1) using precomputed values of the products of the polynomials that appear in the denominator of the right-hand side of (4.36). These values are computed in a separate loop, which runs in 0(n).
[0108] The resulting value of u and its reverse, which is equal to v, can be plugged into the Gohberg-Semencul formula (3.4) to compute the inverse matrix
Figure imgf000023_0006
It can also be used as a generating vector for efficient algorithms that compute the products of Toeplitz matrices and vectors. These algorithms can be called in a sequence that implements multiplying the matrix
Figure imgf000023_0007
by a vector without actually storing in memory. This
Figure imgf000023_0005
results in the ICZT algorithm that runs in 0(n log ri).
[0109] The ICZT in Matrix Form
[0110] The following equation shows the ICZT in matrix form:
Figure imgf000023_0001
Figure imgf000023_0002
[0111] That is, the formula shows how to compute the CZT input vector x from its output vector X. This equation was derived by inverting the diagonal matrices in the forward transform formula (2.13) and replacing the matrix
Figure imgf000023_0003
with its inverse
Figure imgf000023_0004
[0112] Each matrix in formula (4.37) is either a diagonal matrix or it can be expressed as a difference of products of Toeplitz matrices. Implementing the formula leads to an 0(n log ri) algorithm for computing the ICZT, which is given in Algorithm 5.2, below. The algorithm performs all matrix computations efficiently by using the generating vectors to compute the results of all matrix-vector operations without storing any intermediate matrices in memory. It requires 0(n) memory to run.
[0113] Example
[0114] In the 3-by-3 case, the CZT can be expressed with the following matrix equation:
Figure imgf000024_0001
[0115] In that case, the expanded matrix equation for the ICZT looks like this:
Figure imgf000024_0002
[0116] The inverse matrix
Figure imgf000024_0004
is given in (4.35). The algorithm, however, does not construct this matrix explicitly. As described above,
Figure imgf000024_0005
can be expressed as follows:
Figure imgf000024_0003
where the vector u = (uo, ui, U2) is given by (4.34) and the vector v = (vo, vi, v2) = (u2, ui, uo) is the reverse of u. For these values of u and v, equation (4.40) has the following form:
Figure imgf000025_0001
[0117] In addition, the matrix
Figure imgf000025_0008
is equal to the transpose of the matrix
Figure imgf000025_0007
and the matrix is equal to the transpose of the matrix
Figure imgf000025_0006
Thus, the inverse matrix
Figure imgf000025_0005
can be expressed in the following simplified form:
Figure imgf000025_0002
Furthermore, both
Figure imgf000025_0004
can be generated from the elements of the vector u.
[0118] Substituting (4.42) into (4.37) leads to the following matrix equation for the ICZT:
Figure imgf000025_0003
Instead, equation (4.43) is computed efficiently by exploiting the structure of these matrices. As described above, these four Toeplitz matrices are not constructed explicitly.
[0119] The CZT Algorithm and the ICZT Algorithm
[0120] Algorithm 5.1 gives the pseudo-code for the CZT algorithm. The algorithm uses the convolution based algorithm TOEPLITZMULTIPLYC, which is described in Appendix E, to multiply a Toeplitz matrix by a vector. Other algorithms for computing the product of a Toeplitz matrix and a vector can be used instead. For example, both TOEPLUZMULTIPLYE described in Appendix C and TOEPLITZMULTIPLYP described in Appendix D can replace TOEPLITZMULTIPLYC in Algorithm 5.1 without changing its computational complexity.
Figure imgf000026_0001
[0121] Algorithm 5.2 gives the pseudo-code for the ICZT algorithm. It implements the inverse formula (4.42) without actually storing any matrices in memory. The algorithm runs in 0(n log n), where n = max( , N). This implementation supports only the case n = M = N. As described above, the function TOEPLITZMULTIPLYC, which is used on lines 23-26, can be replaced with TOEPLITZMULTIPLYE or TOEPLITZMULTIPLYP, without changing the computational complexity of the algorithm.
Figure imgf000027_0001
[0122] FIG. 2 gives the numerical accuracy of the ICZT as a function of the transform size M and the number of bits used by the floating-point numbers during the computations. The two logarithmic spiral contours in FIGS. 1A-1B correspond to =32 andM=64 in FIG. 2. The value of A was set to 1.1 for all rows of FIG. 2. The value of W was determined using the formula The numerical accuracy was computed by performing the
Figure imgf000027_0002
CZT followed by the ICZT and computing the Euclidean distance between the input of the CZT and the output of the ICZT. The final accuracy was averaged over 100 random input vectors. The second column in FIG. 2 shows the condition number of the transformation matrix. Despite the high condition numbers, this problem is solvable even for large values of M when high precision floating-point numbers are used.
[0123] Algorithm 5.3 gives the pseudo-code for the ICZT-RECT algorithm, which implements the inverse algorithm for the case when N≤M. This algorithm calls Algorithm 5.2 with the second parameter set to M and then returns only the first N elements of its output vector.
Figure imgf000028_0001
[0124] Having described the ICZT algorithm, applications for the algorithm are now provided. In that regard, the following is just a partial list of some useful applications of the ICZT algorithm. In embodiments, the ICZT algorithm is used in applications for generating or analyzing the data received from or sent to radar-based sensors. In other embodiments, the ICZT algorithm is used in applications for generating or analyzing the data received from or sent to sonar sensors. In still other embodiments, the ICZT algorithm is used in applications for generating or analyzing the data received from or sent to other range-based sensors.
[0125] In yet other embodiments, the ICZT algorithm is used in hardware
implementations of the ICZT algorithm. In embodiments, the hardware implementation is a variety of systems including a memory device and a processor, e.g., a personal computer, a chip (e.g., system-on-a-chip), a system comprising an application-specific integrated circuit (ASIC), a system comprising a graphics processing unit (GPU), or a field-programmable gate array (FPGA). [0126] In further embodiments, the ICZT algorithm is used in improving the speed of applications that need to compute the ICZT by replacing slower methods that invert the matrix explicitly or solve an explicitly -formulated linear system. Additionally, the ICZT algorithm can replace the conventionally used FFT and IFFT in whole or in part. This replacement can extend the scope of a computational system to cover points on logarithmic spiral contours that may be located inside or outside the unit circle. Still further, prior to or during computing of the ICZT, the frequency domain vector can be modified such that the time domain vector returned by the ICZT is different from the time domain vector used to generate the frequency domain vector. For example, an operation can be performed on the frequency domain vector, such as filtering certain elements or frequencies from the vector.
[0127] Further, in embodiments, the ICZT algorithm is used in medical imaging applications, e.g., CT, PET, or MRI. Additionally, the ICZT algorithm is used in applications in signal processing, signal analysis, signal synthesis, speech and audio processing, and image processing. In signal processing applications, the input vector of the CZT or FFT may be a time-domain vector derived from an audio or image signal, such as by sampling the signal. The output vector of the CZT or FFT may then be a frequency domain vector representation of those signals.
[0128] The following Appendices A-E provide additional information regarding the implementation of the ICZT algorithm.
[0129] Appendix A: Reversing the Direction of the Logarithmic Spiral Contour to Improve the Numerical Accuracy of the CZT and the ICZT
[0130] This appendix describes alternative versions of the CZT and the ICZT algorithms that improve the numerical accuracy of the computed transforms. This is achieved by reversing the direction of the chirp contour when | W \ < 1 and keeping the original direction when | W \≥\. The parameters for the reversed contour are W = W-x and
Figure imgf000030_0001
Depending on the concrete values of the transform parameters, the improvement of the numerical accuracy may exceed several orders of magnitude.
[0131] Algorithm A.1 gives the pseudo-code for the alternative version of the CZT algorithm that performs contour reversal when | W \ < \. Algorithm A.2 gives the pseudocode for the alternative version of the ICZT algorithm that also performs contour reversal in that case.
[0132] Using these algorithms, the numerical accuracy of both the CZT and the ICZT can be improved for chirp contours that are growing logarithmic spirals, i.e., when | W \ < 1. In those cases, Algorithm A.1 and Algorithm A.2 reverse the direction of the chirp contour. Furthermore, this reversal is accompanied by a reversal of the order of the elements in the vector X, which is the CZT output vector in Algorithm A.1 and the ICZT input vector in Algorithm A.2.
Figure imgf000031_0001
[0133] Appendix B: FFT and Inverse FFT Algorithms
[0134] This appendix states the FFT algorithm and the inverse FFT algorithm. Algorithm B.1 gives pseudo-code for the Fast Fourier Transform (FFT). Algorithm B.2 gives pseudo-code for the inverse Fast Fourier Transform (IFFT). Both the FFT and the IFFT run in 0(n log n).
Figure imgf000032_0001
[0135] Appendix C: Multiplying a Toeplitz Matrix by a Vector
[0136] This appendix describes a popular method for multiplying a Toeplitz matrix by a vector. Let A be a n x n Toeplitz matrix and let x be a vector. The matrix A is specified by its first row r and its first column c, where it is assumed that ro is equal to Co. The example in this appendix assumes that n is a power of 2. The approach, however, can be modified to work for other values of n. More formally,
Figure imgf000033_0001
[0137] To compute the product y = Ax efficiently using an FFT-based algorithm, it is possible to embed A into a 2n x 2n circulant matrix
Figure imgf000033_0003
as shown below:
Figure imgf000033_0002
[0138] The vector x is padded with n zeros at the end, which results in a vector
Figure imgf000033_0004
of length 2n:
Figure imgf000034_0002
[0139] The product of
Figure imgf000034_0003
can be computed using an FFT-based algorithm in 0(n log ri). That is, the goal is to compute a vector γ of length 2n, which is equal to
Figure imgf000034_0004
More formally,
Figure imgf000034_0001
[0140] The first n elements of are equal to the corresponding elements of y, i.e., yk =
Figure imgf000034_0006
for each
Figure imgf000034_0005
{0, 1, 2, ... , n-l } .
[0141] It only remains to show how to multiply a (2n)-by-(2n) circulant matrix B by a vector v of length 2n using FFT and IFFT. The matrix B is generated by its first column vector b. More formally, let
Figure imgf000034_0007
[0142] This product can be computed using the DFT and the inverse DFT, which follows from the circular convolution theorem. In other words, each element (Bv)k of the product is equal to the k-t element in the circular convolution of b and v. That is,
Figure imgf000035_0001
where x denotes elementwise multiplication. Therefore,
Figure imgf000035_0002
[0143] The DFT and the inverse DFT can be computed using the FFT and the inverse FFT, i.e.,
Figure imgf000035_0003
[0144] To summarize, the product of an n-by-n Toeplitz matrix and a vector, where n is assumed to be a power of two, can be computed using the following six steps: 1) go from Toeplitz to circulant by concatenating the first column, a single zero, and the reverse of the last n-1 elements of the first row; 2) pad the vector with n zeros at the end; 3) compute the DFT of the first column of the circulant matrix; 4) compute the DFT of the padded vector; 5) multiply the two DFTs elementwise; 6) compute the inverse DFT of the elementwise product; and 7) return the first n elements of the result vector computed by the inverse DFT. Use an FFT algorithm to compute the DFT and an IFFT algorithm to compute the inverse DFT. Note that in step 1) neither the Toeplitz matrix nor the circulant matrix is explicitly computed. Instead, only their generating vectors are used to perform the necessary computations.
[0145] Algorithm C.1 gives the pseudo-code for the algorithm described above. The computational complexity of this algorithm is 0(n log n). The name of the function is TOEPLITZMULTIPLYE, where the Έ' abbreviates 'embedding'.
[0146] Instead of including the FFT computations in the algorithms, it is possible to use FCIRCULANTMULTIPLY (see Algorithm D.2, below). However, FCIRCULANTMULTIPLY does O(n) more work than the sequence of FFT computations because it has to compute
Figure imgf000035_0004
for each
Figure imgf000035_0005
Figure imgf000036_0001
[0147] Appendix D: Toeplitz Vector Product Using Pustylnikov's Decomposition
[0148] An algorithm for multiplying a Toeplitz matrix by a vector can be formulated using Pustylnikov's decomposition. This algorithm does not embed a Toeplitz matrix into a circulant matrix as described in Appendix C. Instead, this appendix describes a different version of TOEPLITZMULTIPLY.
[0149] An example that illustrates this algorithm is shown below. Let A be the following 4-by-4 Toeplitz matrix, which is generated by its first row r and its first column c.
Figure imgf000037_0001
[0150] Then, A can be decomposed into the sum of two matrices as follows:
Figure imgf000037_0002
where A' is a circulant matrix and A" is an f-circulant matrix with /= -1 (i.e., a skew- circulant matrix). For this example, these two matrices have the following form:
Figure imgf000037_0003
[0151] The formula for computing the values of A' and A" is provided below. Let a' : (a'o, a'i, a'2, ... , a'n-i) be the first column of A', i.e.,
Figure imgf000038_0001
[0152] Similarly, let
Figure imgf000038_0004
be the first column of A". That is,
Figure imgf000038_0002
[0153] Then, the elements of a' and a" can be computed using the following formulas:
Figure imgf000038_0003
where r is the first row of A and c is its first column.
[0154] Algorithm D.1 gives the pseudo-code for the algorithm described above. The name of the function is TOEPLITZMULTIPLYP, where 'P' abbreviates 'Pustylnikov'. Lines 27 and 28 call Algorithm D.2, which is described below. The algorithm runs in 0(n log ri) time.
Figure imgf000039_0001
[0155] Algorithm D.2 gives the pseudo-code for the function FCIRCULANTMULTIPLY (for multiplying an f-circulant matrix by a vector), which was used in Algorithm D.l. It runs in 0(n log n).
Figure imgf000040_0001
[0156] Appendix E: Toeplitz Vector Product with FFT-based Convolution
[0157] Algorithm E.1 shows the pseudo-code for yet another algorithm for multiplying a Toeplitz matrix by a vector. The function name in this case is TOEPLITZMULTIPLYC, where 'C abbreviates convolution. The computational complexity of the algorithm is 0(n log ri). This algorithm can be interpreted as a form of circulant embedding, similarly to the approach described in Appendix C.
Figure imgf000041_0001
[0158] Algorithm E.2 gives the pseudo-code for an FFT-based convolution algorithm, which is an 0(n log ri) method for computing discrete convolution. It was used in Algorithm E.l.
Figure imgf000042_0001
[0159] All references, including publications, patent applications, and patents cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
[0160] The use of the terms "a" and "an" and "the" and similar referents in the context of describing the invention (especially in the context of the following claims) is to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms "comprising," "having," "including," and "containing" are to be construed as open-ended terms (i.e., meaning "including, but not limited to,") unless otherwise noted. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., "such as") provided herein, is intended merely to better illuminate the invention and does not pose a limitation on the scope of the invention unless otherwise claimed. No language in the specification should be construed as indicating any non- claimed element as essential to the practice of the invention.
[0161] Preferred embodiments of this invention are described herein, including the best mode known to the inventors for carrying out the invention. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate, and the inventors intend for the invention to be practiced otherwise than as specifically described herein. Accordingly, this invention includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the invention unless otherwise indicated herein or otherwise clearly contradicted by context.

Claims

What is claimed is:
1. A method of inverting Chirp Z-Transform (CZT), wherein the CZT has parameters A and W that define a logarithmic spiral contour in the complex plane through formula
A W-k for k = 0, 1, 2, ... , M— 1, wherein the CZT is capable of being expressed as
X = W A x in which W is a Vandermonde matrix having dimensions -by-N defined by the parameter W and its powers, A is a first diagonal matrix defined by the parameter A and its powers, x is a first vector, and X is a second vector that is computed from the first vector x using the CZT such that the k-th element of X is given by
Figure imgf000044_0001
for k = 0, 1, 2, ... , M— 1, wherein A and W are non-zero complex numbers, the method comprising the steps of: representing the matrix Was a product of a second diagonal matrix P, a Toeplitz matrix and a third diagonal matrix Q, such that the CZT is expressed
as X = P Q A x; expressing an inverse CZT as
Figure imgf000044_0002
wherein
Figure imgf000044_0003
are inverse matrices of A, Q, and P, respectively;
Figure imgf000044_0008
computing the inverse CZT by performing the multiplications in the product
Figure imgf000044_0007
from right to left to calculate a third vector
Figure imgf000044_0005
2. The method of claim 1, wherein each element of the first vector x is substantially equal to a corresponding element of the third vector
Figure imgf000044_0006
3. The method of claim 1, wherein at least one element of the first vector x is not equal to a corresponding element of the third vector
Figure imgf000044_0004
4. The method of claim 3, wherein, prior to computing step, the method further comprises a step of performing an operation on the second vector X that modifies at least one of its elements.
5. The method of claim 4, wherein the operation is a filtering operation.
6. The method of claim 1, wherein the method has a computational complexity of less than or equal to 0(n2), wherein n = max( , N).
7. The method of claim 6, wherein the computational complexity is 0(n log n).
8. The method of claim 1, wherein the matrix
Figure imgf000045_0006
is capable of being expressed as
Figure imgf000045_0007
in which
Figure imgf000045_0008
is a first lower-triangular Toeplitz matrix,
Figure imgf000045_0004
is a first upper-triangular Toeplitz matrix that is equal to the transpose of
Figure imgf000045_0005
is a second upper-triangular Toeplitz matrix,
Figure imgf000045_0009
is a second lower-triangular Toeplitz matrix that is equal to the transpose of
Figure imgf000045_0010
and uo is equal to wherein n is based on at
Figure imgf000045_0003
least one of M or N.
9. The method of claim 8, wherein a generating vector for each of the four matrices
Figure imgf000045_0001
is capable of being derived from a vector u = (uo, ui, . . ., un-i) given by:
, wherein k = 0, 1, n-l.
Figure imgf000045_0002
10. The method of claim 8, wherein, during the step of computing the product of
with a vector, the multiplications are performed from right to
Figure imgf000045_0011
left such that no matrix is multiplied by another matrix.
11. The method of claim 10, wherein multiplication of at least one of the Toeplitz matrices
Figure imgf000045_0012
by a vector further comprises the steps of: embedding the Toeplitz matrix into a circulant matrix, wherein the circulant matrix is represented by its generating vector, and wherein the dimensions of the circulant matrix are based on at least one of M or N; and padding the vector with zeros prior to multiplication to produce a padded vector having the same length as the number of columns of the circulant matrix; and
computing a product vector by multiplying the circulant matrix with the padded vector; and
extracting a result vector comprising elements of the product vector corresponding to the rows of the circulant matrix in which the Toeplitz matrix is embedded.
12. The method of claim 11, wherein the circulant matrix is a square matrix and wherein the number of rows of the circulant matrix is a power of two.
13. The method of claim 10, wherein multiplication of at least one of the Toeplitz matrices
Figure imgf000046_0001
by a vector comprises performing a Pustylnikov decomposition of the matrix prior to multiplication with the vector.
14. The method of claim 10, wherein the multiplication of at least one of the Toeplitz matrices by a vector further comprises the steps of:
Figure imgf000046_0002
embedding the Toeplitz matrix into an expanded Toeplitz matrix having dimensions based on at least one of M or N, by padding its generating vector with zeros; padding the vector by which the Toeplitz matrix is multiplied with zeros to produce a padded vector having the same length as the number of columns in the expanded Toeplitz matrix; expressing the expanded Toeplitz matrix as a sum of a circulant matrix and a skew- circulant matrix using Pustylnikov decomposition; multiplying the circulant matrix by the padded vector, multiplying the skew- circulant matrix by the padded vector, and adding the two resulting vectors to produce a padded results vector; extracting a results vector from the padded results vector by retaining the elements of the padded results vector that correspond to the rows of the expanded Toeplitz matrix into which the Toeplitz matrix is embedded.
15. The method of claim 14 wherein the number of rows and the number of columns in the expanded Toeplitz matrix is a power of two.
16. The method of claim 8, wherein none of the matrices
Figure imgf000047_0001
are fully stored in a memory during performance of the method.
17. The method of claim 1, wherein no more than O(n) memory is required to perform the method and wherein n = max( , N).
18. The method of claim 1 , wherein M equals N.
19. The method of claim 1 , wherein M does not equal N.
20. The method of claim 1, wherein the first vector x is derived from an audio signal.
21. The method of claim 20, wherein the audio signal comprises a speech signal.
22. The method of claim 20, wherein the audio signal comprises at least one of a sonar signal or an ultrasound signal.
23. The method of claim 1, wherein the first vector x is derived from an image signal.
24. The method of claim 23, wherein the image signal comprises at least one of a computed tomography (CT) signal, a positron emission tomography (PET) signal, or a magnetic resonance imaging (MRI) signal.
25. The method of claim 1, wherein the first vector x is derived from a signal received by a radar-based sensor.
26. The method of claim 1, wherein the first vector x is used to generate a signal that is sent to a radar-based sensor.
27. The method of claim 1, wherein the second vector X is not computed from a specific first vector x using the CZT with the same parameters A and W.
28. A method of expanding the scope of a computational system that, in one or more instances, uses at least one of fast Fourier transform (FFT) or inverse FFT (IFFT) to cover logarithmic spiral contours of the formula AW-k in which A and W are non-zero complex numbers and k = 0, 1, ... , M- 1, comprising the step of utilizing, in at least one instance, an inverse Chirp Z-Transform (ICZT) in place of an IFFT or an FFT.
29. The method of claim 28, wherein the ICZT is capable of being expressed in terms of a Vandermonde matrix having dimensions of M-by-N, wherein a computational complexity of utilizing the ICZT on the computational system is less than or equal to 0(n2), wherein n = max(M, N).
30. The method of claim 29, wherein the computational complexity is 0(n log n).
31. The method of claim 30, wherein the computational system uses no more than O(n) memory during the performance of an ICZT.
32. A method of increasing the efficiency of a computational system that inverts the Chirp Z-Transform (CZT) that is capable of being expressed in terms of a Vandermonde matrix having dimensions of M-by-N, comprising the step of utilizing a method to invert the CZT, wherein the method has a computational complexity of less than or equal to 0(n2) in which n = max(M, N) and wherein the CZT is capable of being parametrized by two nonzero complex numbers A and W that define a logarithmic spiral contour through the formula A Wk, in which k = 0, 1, ... , M-l.
33. The method of claim 32, wherein the computational system requires no more than O(n) memory while computing an inverse CZT.
34. The method of claim 32, wherein the method for inverting the CZT has a computational complexity of 0(n log n).
35. A method of improving the numerical accuracy of a computational system that, in one or more instances, calculates at least one of a Chirp Z-Transform (CZT) or an inverse Chirp Z-Transform (ICZT), the CZT, ICZT, or both the CZT and ICZT being capable of being parametrized by two non-zero complex numbers A and fTthat define a logarithmic spiral contour through the formula A W-k in which k = 0, 1, ... , M- 1, wherein, when
I W I < 1, the method comprises the step of reversing, in at least one instance, a direction of the logarithmic spiral contour such that the start point and the end point of the contour are swapped, and wherein the order of the elements in an output vector of the CZT, an input vector of the ICZT, or both the output vector of the CZT and the input vector of the ICZT is also reversed.
36. A method of converting a frequency domain vector X of length M to a time domain vector x of length N, comprising the step of computing an inverse Chirp Z-Transform (ICZT) that is capable of being expressed as by
Figure imgf000049_0001
performing multiplications from right to left to calculate the time domain vector x, wherein A"1 is a first diagonal matrix defined by a parameter^ and its powers, Q-1 is a second diagonal matrix based on a parameter W and its powers, A is a first lower-triangular Toeplitz matrix,
Figure imgf000049_0006
is a first upper-triangular Toeplitz matrix that is equal to the transpose of is a second upper-triangular Toeplitz matrix, is a second lower-triangular Toeplitz matrix that is equal to the transpose of
Figure imgf000049_0004
is a third diagonal matrix based on a parameter W and its powers, and wherein parameters A and W are non-zero complex numbers that define a logarithmic spiral contour through formula A W-k for k = 0, 1, 2, ... , M- 1, and wherein uo is equal to and wherein n is based on at least one of M or N.
Figure imgf000049_0002
37. The method of claim 36, wherein the frequency domain vector X is capable of being expressed as
Figure imgf000049_0005
in which W is a Vandermonde matrix defined by the complex parameter W and its powers and A is a fourth diagonal matrix based on the complex parameter A and its powers such that the k-th element of the vector X is given by
Figure imgf000049_0003
for k = 0, 1, 2, ... , M— 1, and wherein
Figure imgf000049_0007
is a second time domain vector of length N.
38. The method of claim 37, wherein the matrix W is capable of being represented by a product of a fifth diagonal matrix P, a Toeplitz matrix
Figure imgf000050_0009
and a sixth diagonal matrix Q such that the frequency domain vector X can be expressed as a Chirp Z-Transform (CZT) in matrix form, wherein
Figure imgf000050_0008
39. The method of claim 36, wherein the frequency domain vector X is not computed from a specific time domain vector x using the CZT with the same parameters A and W.
40. The method of claim 36, wherein no more than 0(n) numbers are stored in memory during performance of the method and wherein n = max( , N).
41. The method of claim 36, wherein none of the matrices
Figure imgf000050_0001
and P-1 are fully stored in memory during performance of the method.
42. The method of claim 36, wherein the computational complexity of the method is less than or equal to 0(n2), wherein n = max( , N).
43. The method of claim 42, wherein the computational complexity is 0(n log n).
44. A system, comprising:
a memory device, the memory device configured to store a frequency domain vector X of length M; and
a processor, the processor being configured to map the frequency domain vector X to a time domain vector x using an inverse Chirp Z-Transform (I CZT); and
wherein the ICZT is capable of being expressed as
and
Figure imgf000050_0002
wherein the processor performs matrix multiplications of the ICZT from right to left to calculate the time domain vector x of length Ν, wherein A-1 is a first diagonal matrix defined by a parameter A and its powers, Q-1 is a second diagonal matrix based on a parameter W and its powers,
Figure imgf000050_0006
is a first lower-triangular Toeplitz matrix,
Figure imgf000050_0004
is a first upper-triangular Toeplitz matrix that is equal to the transpose of
Figure imgf000050_0003
is a second upper- triangular Toeplitz matrix,
Figure imgf000050_0005
is a second lower-triangular Toeplitz matrix that is equal to the transpose of
Figure imgf000050_0007
is a third diagonal matrix based on the parameter W and its powers, and X is the frequency domain vector; and wherein parameters A and W are non-zero complex numbers that define a logarithmic spiral contour through formula^ W-k for k = 0, 1, 2, ... , M- 1, and wherein uo is equal to and n is based on at least one of M or N.
Figure imgf000051_0002
45. The system of claim 44, wherein a generating vector for each of the four matrices
Figure imgf000051_0003
is capable of being derived from a vector u = (uo, ui, . . ., un-i) given by:
Figure imgf000051_0001
46. The system of claim 44, further comprising an input device for receiving a signal, wherein the processor is coupled to the input device, wherein the processor is configured to convert the signal to a time domain vector
Figure imgf000051_0005
and wherein the processor generates the frequency domain vector X from the time domain vector
Figure imgf000051_0006
using the Chirp Z-Transform.
47. The system of claim 44, wherein the processor is capable of being further configured to perform an operation on the frequency domain vector X that modifies at least one of its elements before mapping the frequency domain vector X to the time domain vector x using the ICZT.
48. The system of claim 44, wherein the memory device does not store all elements of each matrix while the processor is mapping the frequency
Figure imgf000051_0004
domain vector X to the time domain vector x using the ICZT.
49. The system of claim 44, wherein the processor is capable of performing its computations using increased floating-point precision.
50. The system of claim 49, wherein the processor is capable of using floating-point numbers with more than 32 bits.
51. The system of claim 44, wherein the memory device uses no more than O(n) memory while the processor is mapping the frequency domain vector X to the time domain vector x using the ICZT and wherein n = max( , N).
52. The system of claim 44, wherein the processor performs O(n2) or fewer primitive operations while it is mapping the frequency domain vector X to the time domain vector x using the ICZT and wherein n = max( , N).
53. The system of claim 52, wherein the processor performs O(n log n) operations during the mapping.
54. The system of claim 44, wherein the system is at least one of a personal computer (PC), a system-on-a-chip (SoC), a system comprising an application-specific integrated circuit (ASIC), a system comprising a field-programmable gate array (FPGA), or a system comprising a graphics processing unit (GPU).
55. The system of claim 44, wherein the frequency domain vector X is not computed from a specific time domain vector x using a Chirp Z-Transform with the same parameters A and W.
PCT/US2018/043468 2017-07-24 2018-07-24 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY WO2019023220A1 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020207004589A KR102183973B1 (en) 2017-07-24 2018-07-24 System and method for inverting chirp Z-transform into O(n log n) time and O(n) memory
CN201880050406.7A CN111033499B (en) 2017-07-24 2018-07-24 System and method for inverting chirp-Z-transform in O (n log n) time and O (n) storage
EP18838443.2A EP3659052A4 (en) 2017-07-24 2018-07-24 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY
KR1020207033268A KR102338456B1 (en) 2017-07-24 2018-07-24 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY
JP2020504169A JP6928208B2 (en) 2017-07-24 2018-07-24 Systems and methods for inverse transformation of chirp Z-transform with O (nlog (n)) time and O (n) memory
US16/750,850 US20210141856A2 (en) 2017-07-24 2020-01-23 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY
US17/314,982 US20210397674A1 (en) 2017-07-24 2021-05-07 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762536361P 2017-07-24 2017-07-24
US62/536,361 2017-07-24

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/750,850 Continuation US20210141856A2 (en) 2017-07-24 2020-01-23 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY

Publications (1)

Publication Number Publication Date
WO2019023220A1 true WO2019023220A1 (en) 2019-01-31

Family

ID=65041222

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2018/043468 WO2019023220A1 (en) 2017-07-24 2018-07-24 SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY

Country Status (6)

Country Link
US (2) US20210141856A2 (en)
EP (1) EP3659052A4 (en)
JP (1) JP6928208B2 (en)
KR (2) KR102338456B1 (en)
CN (1) CN111033499B (en)
WO (1) WO2019023220A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5282154A (en) * 1992-06-01 1994-01-25 Thomson Consumer Electronics, Inc. System for determining and repairing instability in an IIR filter suitable for use in deghosting apparatus
US20140122025A1 (en) * 2012-10-26 2014-05-01 Agilent Technologies, Inc. Method and system for performing real-time spectral analysis of non-stationary signal
WO2014120178A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L.P. Data interpolation and resampling
US20170149590A1 (en) * 2015-11-25 2017-05-25 Korea Aerospace Research Institute Method and system for inverse chirp-z transformation

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4076960A (en) * 1976-10-27 1978-02-28 Texas Instruments Incorporated CCD speech processor
US6895421B1 (en) * 2000-10-06 2005-05-17 Intel Corporation Method and apparatus for effectively performing linear transformations
US7296045B2 (en) * 2004-06-10 2007-11-13 Hasan Sehitoglu Matrix-valued methods and apparatus for signal processing
CN100525268C (en) * 2006-11-15 2009-08-05 重庆邮电大学 An estimation method for OFDM channel based on time-frequency conversion
GB0810860D0 (en) * 2008-06-13 2009-01-07 Bae Systems Plc A Process and System for Determining the Position and Velocity of an Object
CN103576147A (en) * 2012-08-02 2014-02-12 中国科学院电子学研究所 Imaging method of synthetic aperture radar in large squint angle mode
KR101607812B1 (en) * 2015-07-21 2016-04-01 공주대학교 산학협력단 METHOD AND APPARATUS FOR PARALLEL MULTIPLICATION CALCULATION USING DICKSON BASIS ON GF(2^n) FINITE FIELD

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5282154A (en) * 1992-06-01 1994-01-25 Thomson Consumer Electronics, Inc. System for determining and repairing instability in an IIR filter suitable for use in deghosting apparatus
US20140122025A1 (en) * 2012-10-26 2014-05-01 Agilent Technologies, Inc. Method and system for performing real-time spectral analysis of non-stationary signal
WO2014120178A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L.P. Data interpolation and resampling
US20170149590A1 (en) * 2015-11-25 2017-05-25 Korea Aerospace Research Institute Method and system for inverse chirp-z transformation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP3659052A4 *
Y. LIU ET AL.: "An Extended Inverse Chirp-Z Transform Algorithm to Process High Squint SAR Data", PROGRESS IN ELECTROMAGNETICS RESEARCH, vol. 138, January 2013 (2013-01-01), pages 555 - 569, XP055571932, Retrieved from the Internet <URL:http://www.jpier.org/PIER/pier.php?paper=13021407> *

Also Published As

Publication number Publication date
KR20200133283A (en) 2020-11-26
JP6928208B2 (en) 2021-09-01
KR102183973B1 (en) 2020-12-03
US20200159808A1 (en) 2020-05-21
CN111033499A (en) 2020-04-17
CN111033499B (en) 2022-07-29
EP3659052A4 (en) 2022-05-04
US20210397674A1 (en) 2021-12-23
KR20200023486A (en) 2020-03-04
JP2020526852A (en) 2020-08-31
KR102338456B1 (en) 2021-12-13
EP3659052A1 (en) 2020-06-03
US20210141856A2 (en) 2021-05-13

Similar Documents

Publication Publication Date Title
Montgomery Five, six, and seven-term Karatsuba-like formulae
Cooley et al. The fast Fourier transform and its applications
Burrus Fast fourier transforms
Bowman et al. Efficient dealiased convolutions without padding
Park Guaranteed-stable sliding DFT algorithm with minimal computational requirements
García-Martínez et al. A characterisation of Lie algebras via algebraic exponentiation
Najmi Wavelets: A concise guide
Brubaker et al. Weyl group multiple Dirichlet series II: The stable case
Ju et al. Derivation and analysis of fast bilinear algorithms for convolution
Thomé Square root algorithms for the number field sieve
WO2019023220A1 (en) SYSTEMS AND METHODS FOR INVERTING THE CHIRP Z-TRANSFORM IN O(n log n) TIME AND O(n) MEMORY
Thomas et al. Fixed-point implementation of discrete Hirschman transform
Panda Performance Analysis and Design of a Discreet Cosine Transform processor Using CORDIC algorithm
Amerbaev et al. Efficient calculation of cyclic convolution by means of fast Fourier transform in a finite field
Abraham et al. Implementation of Sparse Ramanujan Sequence (SRS) based transforms in FPGA
Thomas Computing Transforms Using Their Eigenstructure
Chmielowiec Fast, parallel algorithm for multiplying polynomials with integer coefficients
RU131886U1 (en) DEVICE FOR CALCULATING DISCRETE POLYNOMIAL TRANSFORMATIONS
BOUNCHALEUN An Elementary Introduction To Fast Fourier Transform Algorithms
Mayster et al. Logarithmic Lévy process directed by Poisson subordinator
Iglewska-Nowak Uncertainty product of the spherical Abel-Poisson wavelet
Vyas et al. Fourier Analysis and Fourier Transform
Boussakta et al. Radix-4 decimation-in-frequency algorithm for the new Mersenne number transform
Haridoss et al. Comparative Analysis of Digital FIR Filter using Various Types of Modular Arithmetic Algorithms
Christiansen Time-frequency analysis and its applications in denoising

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18838443

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020504169

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 20207004589

Country of ref document: KR

Kind code of ref document: A

ENP Entry into the national phase

Ref document number: 2018838443

Country of ref document: EP

Effective date: 20200224