Introduction: Chirplet Transform
Our world is filled with periodic phenomena, i.e. patterns that repeat or nearly-repeat.
Examples include sounds and other vibrations in which there is a back-and-forth movement of something.
Usually these vibrations or repetitions are considered as frequency (vibrations per second or repetitions per unit of distance, etc.), for which spectrum analysis, Fourier analysis, or wavelet (piece of waves) anaysis is performed.
However many things that repeat do so at a varying rate, i.e. things in nature like your heartbeat slow down and speed up over time. Bird song is made of vibrations that speed up or slow down over time as well.
When things are repeating in a way that speeds up or slows down we call that "chirping". Bird song is perhpaps the most familiar example of chirping, but even your own heart chirps (changes in rate). Chirping of the heart is called HRV (Heart Rate Variability). In regards to CoViD-19 and health in general, one symptom of CoViD is a reduction in HRV. Thus a chirpy heart is a healthy heart.
Photographs of periodic or nearly periodic things also often chirp. See the picture above where there is a repeathing pattern. To the right the period decreases, and thus there is an "upchirp". As we look from left-to-right the frequency increases (period decreases). If we point the camera in the other direction, the result would be a "downchirp".
The chirplet transform is a mathematical transform that helps us understand and process information and phenomena that repeat (periodic phenomena) but with varying scale or period.
To conduct the experiments in this Instructable, it is helpful to have some data that exhibits a chirping effect.
A good way to get chirping data is to record your ECG (electrocardiogram) while laying down and then suddenly getting up to run. Here is a dataset with a simple Octave script to read it:
Another good way to get chirping data is to take pictures of things that have repeataing patterns. Try tiles or bricks or other things that are somewhat periodic, and photograph them with the image plane parallel to the object (non-chirping) and at various other angles (e.g. upchirps, downchirps, with varying chirp rates, etc.).
Step 1: Collect Some Data That Exhibits Chirping Phenomena
Begin by collecting data that exhibits chirping phenomena.
Initially start with data that has single component chirps in it.
If you want something more advanced, later migrate to data that has multi-component chirps in it, e.g. something that has different chirps combined together in the same signal or waveform that you are analyzing.
Step 2: Begin by Computing a Spectrogram to See the Chirping Phenomenon.
First compute the spectrogram to understand the chirping.
You can use the Matlab script I wrote in 1990, though now we use Octave (don't use Matlab anymore because it requires a software license and I want to support free open source when possible.
The above example shows the Doppler radar return from a growler (iceberg fragment) bobbing up and down in the sea, as it moves towards and away from the radar in a cyclic pattern. Notice the nearly sinusoidal pattern in time-frequency space, resulting in what sounds like a warble (warbling sound).
The dataset for the chirping heart experiment (laying down and then suddenly running) is here
http://eyetap.org/ecg/swimop2021mar10/ (Links to an external site.)
and here's an Octave script I wrote to read it: ecg_read_data.m
and I also have other Octave scripts there (".m" files) actually Matlab scripts I wrote in 1990 (about 30 years ago) but will work (with minor tweaks) in Octave (we switched from Matlab to Octave about 20 years ago).
gives time-freq, e.g. http://eyetap.org/ecg/swimop2021mar10/TF_SwimOP20... (Links to an external site.)
was generated by tf.m
ff.m is chirplet transform freq-freq. plane.
is to listen to the ECG waveform (44100 s/sec will play about 44100/270 times faster than real time).
Step 3: Now Compute the Chirplet Transform
Depending on the nature of the signal, you might want to isolate a portion of the signal that has a chirp in it. You can zero in on part of the signal that has just one chirp in it, and try that first, then advance to multi-component chirps.
In the left side of the figure shown above, you see the chirplet transform of the Doppler radar return from a growler (iceberg fragment). The starting frequency is zero, and the ending frequency is strongly negative. That means that at the beginning of the time record, the iceberg was not moving with respect to the ship's radar, but at the end of the data record the iceberg was moving away from the ship (negative freqeuency). Thus it is accelerating away (going from standing still to moving away). Compare this to the sea clutter on the right in which there are no visible iceberg fragments.
Step 4: Learning More and Going Further
Some really great scientists and mathematicians have contributed immensely to research on the chirplet transform.
Here's some implementations of the chirplet transform in Matlab or Octave:
My student, Aman, implemented the ACT (Adaptive Chirplet Transform) in Python:
There's also another chirplet implementation in Python: