Fourier Series Visualisation with D3
bl.ocks.org
bl.ocks.org
This means that what this visualisation effectively depicts is the analytical signal [1] which is what you get when you use the hilbert transform to 'recover' the imaginary part of the original signal. This transformation is convenient as it allows you to determine the instantaneous phase and amplitude at each point in time, so you can calculate a frequency and volume for every single moment in time.
A link to my channel is in my HN profile, if you're interested in the earlier videos in the series.
FFT section starts at 4:33, analytic signals come up at 7:20.
https://www.youtube.com/watch?v=NAsM30MAHLg
As a side note, the guy who designed it was Michelson, famous for the Michaelson/Morley experiment that disproved the existence of the luminiferous ether.
It reminded me of a Reddit post I saw a couple of hours ago:
"How a piano key works"
https://www.reddit.com/r/gifs/comments/ptyges/how_a_piano_ke...
https://observablehq.com/@drio/visualizing-the-fourier-serie...
and I have a follow up that I call Alien Machines:
https://observablehq.com/@drio/fourier-series-part-2-machine...
Thank you, Fourier!
What are some examples of problems you've solved with Fourier series/transforms?
- fast large-integer and polynomial multiplication, - efficient matrix–vector multiplication for Toeplitz,- circulant and other structured matrices, - filtering algorithms (see overlap–add and overlap–save methods), - fast algorithms for discrete cosine or sine transforms (e.g. fast DCT used for JPEG and MPEG/MP3 encoding and decoding), - fast Chebyshev approximation, - solving difference equations, - computation of isotopic distributions.[47] - modulation and demodulation of complex data symbols using orthogonal frequency division multiplexing (OFDM) for 5G, LTE, Wi-Fi, DSL, and other modern communication systems.
And naturally for any time-based signal about half a gazillion applications due to it's ability to detect "traits" which can be stored/read efficiently due to time => freq transform
nice demo, but this site is great as well
https://www.myfourierepicycles.com/
you can draw your own picture and it converts it to FT
Everytime I want to understand control theory better I stumble over this and the literature is often quite (deliberately?) obtuse.
If it does then I can recommend Practical Signals Theory with MATLAB Applications by Richard J. Tervo
Lots of real world examples of systems and signals in a level appropriate for a first DSP class.
Honestly it's kinda like linear algebra in that everyone has their own favorite and there is a place for many styles. The best thing is to go a nearby college library and look at a lot of them and find an author that speaks to you.
It can be bought, but is available for free. Code is also available via GitHub. It uses Python and Jupyter.
"The premise of this book (and the other books in the Think X series) is that if you know how to program, you can use that skill to learn other things. I am writing this book because I think the conventional approach to digital signal processing is backward: most books (and the classes that use them) present the material bottom-up, starting with mathematical abstractions like phasors."
of the standard texts, my favorite was the proakis one.
also used linear systems and signals by lathi in school, it was okay.
https://jackschaedler.github.io/circles-sines-signals/
It's also done with (an old version of) d3.
What I'm missing is typescript support, otherwise it's really cool.
I just (more-or-less blindly, not grokking the actual math behind it) ported the yin algorithm from someone else's implementation this year and tau was defined as a range where tau min is samplerate / freq_max and tau max is samplerate / freq_min where freq_min and freq_max are the bounds of the detection algorithm, at least as I understood it. My port works but I never really understood tau (except as I described) -- if there's a way I can refactor this with a fixed tau that would be very interesting!
For example the circumference on the unit circle is 2π and would become just τ if we adopted it as a constant.
function FT(A, N, φ) {
φ = φ || 0;
Just don't. Identifiers should start with [A-Za-z_] and contain [A-Za-z0-9_] and no other characters. Κ = 1
K = 2
К = 3
As for "widely understood", consider a program that uses 10 Greek symbols each of which is known by 90% of programmers (a high estimate IMO). If the program is looked at by 10 programmers, the probability that they'll all know the symbols is 0.0027%.This argument does not apply to the original example and it's an odd argument to make.
The biggest downside to using 'φ' over 'phi' is how hard the first is to type on most keyboards, and how it might be harder to google (although I just tested and copy+paste+search gives me the right answer immediately).
I'm a fan of reducing jargon, but this is a very standard symbol and I like its use in a codebase - especially one targeted at people studying mathematics.
I've studied maths at university level and I didn't recognise phi (I thought of it as "that squiggle") in that context.
I mean I probably could've guessed it's name was psi or phi or somesuch, but I certainly wouldn't have been sure.