
Fast inverse chirp z-transform found - regularfry
https://techxplore.com/news/2019-10-year-old-puzzle.html
======
simo_dax
Small explanation for people not introduced to signals theory: Fourier
transform is the decomposition of an arbitrary signal into many sinusoids,
such that their sum gives a signal identical to the starting one. Each of
these sinusoids can be represented using Euler's formula as e^(i * omega * t).
You can see that the exponent is purely imaginary.

There is a generalization of this transform (i.e. this transform is a
particular case of a more general one): what if instead of a purely imaginary
exponent we use a generic complex value a+ib? Then e^((a+ib) * t) = e^(a *
t)e^(ib * t): the new term that appears is a real-valued exponential, so
exponential curves can also be used describe the starting signal!

However, making a discrete-time, sample-based algorithm of this transform is
tricky, and the corresponding inverse transform (the "sum" of the components
to get the starting signal back) didn't exist before

~~~
ttoinou
Why is reversing the transform hard ? It's just about computing back values by
following the transform definition, it should be even easier than doing the
original transform.

Unless the hard part is doing that

1\. Fast

2\. with Discrete values

3\. inverse discrete transform( discrete transform( discrete values ) ) should
be almost equal to discrete values with high accuracy

is that right ?

~~~
simo_dax
Each of these is certainly a complication, for example standard discrete-time
Fourier transform is O(n^2) while the Fast Fourier Transform algorithm manages
to do the same in O(nlogn), but I think the main difficulty here is that the
direct transform is an integral (or series, depends if you're using continuous
or discrete one) over time, which is a single real variable. The inverse is an
integral over the complex variable, a+ib, and you need a whole 2D plane to
represent it (the complex plane indeed), a single 1D line is not enough. So
how do you take an integral of a complex value over a 2D plane? And here you
start delving deep into theorems and convergence regions.. stuff that's quite
difficult to grasp without having experience with complex calculus (and I
don't)

The inverse fourier trasnform, on the other hand, is limited to the imaginary
axis of the complex plane (the exponent is a purely imaginary number), so
you're restricting it to be monodimensional, hence the relative simplicity in
reversing the transform

Also, keep in mind that all of this assumes you have infinite samples, so you
need to use some form of windowing which doesn't distort too much the signal

~~~
bullen
Could this be used to improve LoRa range or bandwidth?

------
fdej
Huh, weird that this is making such big headlines. A fast (O(n log n)) inverse
chirp z-transform was described 16 years ago in Alin Bostan's PhD thesis
[https://specfun.inria.fr/bostan/these/These.pdf](https://specfun.inria.fr/bostan/these/These.pdf)

Also in this more compact paper by Bostan and Schost:
[https://specfun.inria.fr/bostan/publications/BoSc05.pdf](https://specfun.inria.fr/bostan/publications/BoSc05.pdf)

The new algorithm may be a different way to do it (I haven't studied the
paper), but the authors ought to have cited previous work. Where does Nature
find their referees?

~~~
yorwba
The inverse chirp z-transform in that second paper is described as follows:

 _Let us now focus on the computation of the inverse chirp transform. The idea
is to use the Newton basis for intermediate computations: first perform a
Newton interpolation, then perform a conversion from the Newton basis to the
monomial basis. Both steps have complexities M(n) + O(n), which gives the
estimate of 2M(n) + O(n)_

The function M(n)

 _denotes the cost of multiplying univariate polynomials of degree less than
n. Using FFT-based multiplication algorithms, M(n) can be taken in O(n log(n)
log(log(n)))_

So they did not reach O(n log n).

~~~
fdej
That complexity bound applies to polynomials over more general coefficient
rings which may not have roots of unity. Over the usual complex numbers the
complexity is O(n log n).

------
s_Hogg
For the uninitiated, what does this particular breakthrough enable? I
understand the point it makes about being able to reverse a decomposition but
don't get what the practical consequences are.

~~~
willis936
I have worked with it a bit in my time in physical layer test and measurement.

I’ll cover some quick basics then explain why chirp z is useful.

Ohm’s law: voltage = current * resistance. Resistance is considered a steady
state value. Impedance is resistance across frequency. In the real world
channels (cables, the air, etc.) do not have a flat impedance (the same
resistance across all frequencies). Similarly, transmitters and receivers do
not have flat resistance. If you try to send a signal through a channel that
has too much insertion loss, then the receiver won’t be able to decode it. If
the impedance of a transmitter/receiver is different than the channel there
will be reflections that damage signal integrity (there are good/easy physical
analogs to explain this, but I won’t. Think back to waves in physics class).

We can measure impedance over frequency directly using a vector network
analyzer (VNA) or a time domain reflectometer (TDR). A VNA sweeps across
frequencies and listens to the response. A TDR sends a pulse then waits for
the response at a given delay. It sends many pulses and looks at many delays
to build up an impedance over time plot. This impedance over time is very
useful because it can show jumps in impedance at given electrical lengths.
Like you can see impedance jump at 30 ns in where you expect to have the
connector soldered to board, etc. However, TDRs compared to VNAs, are
expensive, difficult to calibrate, and take data very slowly. So the industry
has moved towards VNAs. However standards bodies (like the IEEE) are starting
to appreciate the use of time domain impedance.

Now to why chirp z is useful. You can reversibly convert from the time domain
to the frequency domain using a fourier transform. Great. You just have to
assume that your signal repeats for all time. Hmm. Zero pad and don’t worry
about it. What do we not get from this assumption though? Low frequency
information. So let’s start with a frequency domain data set (a la VNA) and
convert to the time domain. Well that missing low frequency information is
very important. You can extrapolate the missing values. The error in the
extrapolation will shift your entire impedance profile by huge amounts. In
comes chirp z. It is able to handle the missing spectrum much better than the
fourier transform.

To summarize: validating new hardware before mass production requires
impedance measurement. Impedance measurement has two instrument options with
large tradeoffs. Advancements in the chirp z algorithm reduce the penalties of
one of those options.

~~~
CamperBob2
_Now to why chirp z is useful. You can reversibly convert from the time domain
to the frequency domain using a fourier transform. Great. You just have to
assume that your signal repeats for all time. Hmm. Zero pad and don’t worry
about it. What do we not get from this assumption though? Low frequency
information. So let’s start with a frequency domain data set (a la VNA) and
convert to the time domain. Well that missing low frequency information is
very important. You can extrapolate the missing values. The error in the
extrapolation will shift your entire impedance profile by huge amounts. In
comes chirp z. It is able to handle the missing spectrum much better than the
fourier transform._

So, it seems likely that you're right about the CZT being used in time-domain
netowrk analysis, since I've seen documentation indicating that it was used
for that purpose as far back as the HP 8510.[1] But I still don't grok why,
and Rytting's brief explanation on page 13 of that document makes no sense
whatsoever.

From a practical perspective, the chirp-Z transform just lets us use arbitrary
start/end frequencies rather than the entire DC-Nyquist range that traditional
FFTs encompass, correct? If I'm emulating lowpass TDR with a VNA, I'll have to
extrapolate the DC response, as you point out... but what _specifically_ makes
the CZT better suited to this extrapolation process?

[1]:
[http://hparchive.com/seminar_notes/a-137.pdf](http://hparchive.com/seminar_notes/a-137.pdf)

------
The_rationalist
it seems they have reinvented the wheel. It was solved in 2003:
[https://specfun.inria.fr/bostan/these/These.pdf](https://specfun.inria.fr/bostan/these/These.pdf)

------
daedalus2027
Hi, I tried to make an implementation of the algorithm in python. Need input.
Can you validate it please?

[https://github.com/daedalus/math/blob/master/chirp_zeta_tran...](https://github.com/daedalus/math/blob/master/chirp_zeta_transform.py)

------
jiggawatts
Anyone have a link to a non-paywalled version of the paper?

~~~
__john
The link in the article was not paywalled for me (maybe it is for others?).

[https://www.nature.com/articles/s41598-019-50234-9](https://www.nature.com/articles/s41598-019-50234-9)

~~~
Fronzie
The publication itself also seems freely accessible:

[https://www.nature.com/articles/s41598-019-50234-9.pdf](https://www.nature.com/articles/s41598-019-50234-9.pdf)

