No, it is not. In fact it is quite a superficial example of a much deeper theory, behind functions, their approximations and their representations.
The FFT is nifty but that's FINO. The Google boys also had a few O(N^2) to O(N log N) moments. Those seemed to move the needle a bit as well.
But even if we restrict to "things that made Nano Banana Pro possible" Shannon and Turing leapfrog Fourier.
Glad I'm not the only one who noticed there is a weekly (or more) post on what Fourier transform is.
More seriously, there are tens of thousands of people who come to HN. If Fourier stuff gets upvoted, it's because people find it informative. I happen to know the theory, but I wouldn't gatekeep.
If anyone wants to see my favorite application of the 2D DFT, I made a video of how the DFT is used to remove rainbows in manga on Kaleido 3 color eink on Kobo Colour:
https://www.amazon.com/Who-Fourier-Mathematical-Transnationa...
I would just suggest the author to replace the sentence “99% of the time, it refers to motion in one dimension” with “most of the time” since this is a mathematical article and there’s no need to use specific numbers when they don’t reflect actual data.
https://jontalle.web.engr.illinois.edu/Public/AllenSpeechPro...
Note the two electric circuit models figs 3.2 & 3.8
If your underlying signal is at frequency that is not a harmonic of the sampling length, then you get "ringing" and it's completely unclear how to deal with it (something something Bessel functions)
Actually using DFTs is a nightmare ..
- If I have several dominant frequencies (not multiples of the sampling rate) and I want to know them precisely, it's unclear how I can do that with an FFT
- If I know the frequency a priori and just want to know the phase shift.. also unclear
- If I have missing values.. how do i fill the gaps to distort the resulting spectrum as little as possible?
- If I have samples that are not equally spaced, how am I supposed to deal with that?
- If my measurements have errors, how do I propagate errors through the FFT to my results?
So outside of audio where you control the fixed sample rate and the frequencies are all much lower than the sample rate... it's really hard to use. I tried to use it for a research project and while the results looked cool.. I just wasn't able to backup my math in a convincing way (though it's been a few years so I should try again with ChatGPT's hand-holding)
I recommend people poke around this webpage to get a taste of what a complicated scary monster you're dealing with
I was a bit bummed out there weren't a lot of Compressed Sensing libraries around, but it seems you just need a "convex optimization" routine (aka linear programming). And these seem to exist in every language
I'll try to play around with this! Thank you so much
Have fun on your discovery journey.
From the video tutorial is seems relatively straightforward. I guess the basis selection is a fundamental issue that will be problem-specific.
I will have to try it with some concrete examples. The first question I have is, will it still work if you have a lot of high frequency noise? In the cases I'm thinking either there is measurement noise or just other jitter. So while the lower frequencies are sparse but I guess the higher frequencies not so much. I can't bandpass the data b/c it's got lots of holes or it's irregularly spaced.
Maybe it'll still work though!
And as the previous answer said: compressed sensing (or compressive sensing) can help as well for some non-standard cases.
The high level description on wikipedia seems very compelling.. And would you say it'd be a huge task to really grok it?
Paper by Stan Osher et al: https://arxiv.org/abs/1104.0262
- Start with a list of basis functions and your signal.
- Go through the list and find the basis function that best correlates with the signal. This gives you a basis function and a coefficient.
- Subtract out the basis function (scaled by the coefficient) from your signal, and then repeat with this new residual signal.
The Fourier transform is similar using sine wave basis functions.
The key that makes this work in situations where the Nyquist theorem says we don't have a high enough sampling rate is ensuring our sampling (possibly random) is un-correlated with the basis functions and our basis functions are good approximations for the signal. That lowers the likelihood that our basis functions correlating well with our samples is by chance and raises likelihood it correlates well with the actual signal.
https://github.com/dsego/strobe-tuner/blob/main/core/dft.odi...
Then there was something about circles and why do some people call them some other silly thing?
So far, so utterly meaningless, as far as I could tell. just seemed like meaningless babble to make even a kindergartner feel comfortable with the article, but it didn't seem to have communicated much of anything, really.
Then there were circles. Some of them were moving, one of them had a sinus wave next to it and some balls were tracing both in sync, indicating which part of the sinus wave equalled which part of the circle I guess?
I understood none of it.
I asked chat gpt to explain to me, i think it has read this article cause it used the smoothie analogy as well. I still don't understand what that analogy is meant to mean.
Then finally I found this: If someone plays a piano chord, you hear one sound. But that sound is actually made of multiple notes (multiple frequencies).
The Fourier Transform is the tool that figures out:
which notes (frequencies) are present, and how loud each one is
That, finally, makes sense.
I really don't have any mathematics in my background, so you lost me towards the very end when the actual math came in, but I can't fault your Fourier explanation for not also explaining imaginary numbers: even I can see they're out of scope for this post!
I'm trying to imagine a 2d surface where the X-axis coordinates are all the real numbers, and the y axis are all the imaginary numbers. That makes them orthogonal, and that seemed to add up with your explanation, up until ixi=-1.
The only way I can get that to add up is if I instead imagine a arbitrary coordinate system, where x and y are not necessarily perpendicular, and i describes the angle between x and y.
I've only just finished my first cup of coffee for the day, so I haven't quite decided yet if that makes any sense whatsoever, but it's the only way I can intuit about it that includes a circular motion like the one you describe..
In this case you could almost describe i as the square root of 180°, which... Yeah it's kinda weird...
Am I still on the right track?
of course, the math here doesn't work out as using degrees or any other unit of rotation a normal person is used to, but instead, some other unit of rotation I haven't quite wrapped my head around yet (what the hell does atan2(b,a) mean? Is atan(a,b) deprecated or what? ) I didn't know namespace collisions were a thing mathematicians worried about, they should just release maths 2.0 and be rid of the legacy atan at this point!
The other important point is that Fourier doesn’t really give you frequency and loudness. It gives you complex numbers that can be used to estimate the loudness of different frequencies. But the complex nature of the transform is somewhat more complex than that (accidental pun).
A fun fact. The Heisenberg uncertainty principle can be viewed as the direct consequence of the nature of the Fourier transform. In other words, it is not an unexplained natural wonder but rather a mathematical inevitability. I only wish we could say the same about the rest of quantum theory!
But it is a lovely, real-world and commonly understood example of how harmonics can work, and thus a nice baby-step into the idea of spectral analysis.
Though the DFT can be implemented efficiently using the Fast Fourier Transform (FFT) algorithm, the DFT is far from being the best estimator for frequencies contained in a signal. Other estimators (like Maximum Likelihood [ML], [Root-]MUSIC, or ESPRIT) are in general far more accurate - at the cost of higher computational effort.
You can even use these algorithms with a single snapshot (spatial smoothing).
If you want pure performance, and understand the underlying statistical processes, then sure I totally agree with you.
The FFT is still easy to use, and it you want a higher frequency resolution (not higher max frequency), you can zero pad your signal and get higher frequency resolution.
Zero-padding helps you to find the true position (frequency) of a peak in the DFT-spectrum. So, your frequency estimates can get better. However, the peaks of a DFT are the summits of hills that are usually much wider than compared to other techniques (like Capon or MUSIC) whose spectra tend to have much narrower hills. Zero-padding does not increase the sharpness of these hills (does not make them narrower). Likewise the DFT tends to be more noisy in the frequency domain compared to other techniques which could lead to false detections (e.g. with a CFAR variant).
Disclaimer: I've not actually done step 1, but I have more faith in you than in myself.
Think of the components of a written number: ones, tens, hundreds etc which have a repeating pattern. Digits are inherently periodic. Not too far from periodic basis functions.
Both involve breaking something down into periodic components, and reversing the process by adding up the components.
The one's digit gives info about parity (odd/even), but nothing else.
analog31•2mo ago
shash•2mo ago
krackers•2mo ago