How to create Bullard plots
In a hilarious episode of the Big Bang Theory named The Higgs Boson Observation, Sheldon schools Penny on the Higgs Boson and says that it's named for the "shameless self promoter Peter Higgs." But in fact, Peter Higgs is, if anything self deprecating, and "He's modest and actually almost to a fault." However, I have found that if you want something named after you, you have to be bold, take the bull by the horns, even cheat if possible. Why do we talk about Darwin's Theory of Evolution when Alfred Russell Wallace wrote the letter that prodded Darwin into finishing his magnum opus, On the Origin of Species? Or as Paul Bettany playing Darwin put it in the movie Creation: "It's been finished for me, actually. A Mr. Alfred Russel Wallace has arrived independently at exactly the same opinion. Expressed in a mere twenty pages. Now there's brevity for you." Darwin eventually did present Wallace's letter to the Royal Society as he requested; at the end of the meeting. He opened the meeting with a subset of his own manuscript, basically stealing the thunder away from Wallace, so that by the end of the meeting, Wallace's letter seemed like just a rehash of Darwin's theory. So now we see things like this that say Darwin and not Wallace.
In a previous article I point out that I found this interesting plot in MIT's course material, but as it turns out, it was WRONG! It seems that everyone who has ever looked at harmonics is wrong, and so, once I took their incorrect plot of harmonics and made it right, I then claimed it for myself. I mean, how can MIT claim something that is wrong? What good is that? So being both brilliant and equally humble, I claim the above plot myself, it's now called a Bullard plot and unlike a spectrum, it shows you the amplitude and phase of the first 35 harmonics of any wave, color coded in my standard, blue for Odd harmonics, red for Even harmonics. But how do you make one of these things? (I'll show you again because the LinkedIn article editor cropped off the top of the above animation)
It's actually pretty easy, especially if you start with my Excel spreadsheet purpose built for the task. Here is how it works: You place a 2048 point waveform in question in the B column of the spreadsheet, do an FFT on it and then, starting at column M, we list out the input signal and the harmonics. In column N, we re-create the fundamental by using a statement that looks like this:
=1+(fft_mag_bin_1/1024)*SIN(2*PI()*incrementor*1/2048+(PI()/2+RADIANS(phase_bin_1))
Now, the 1 just sets the location in the plot. The fft_mag_bin_1 is a value I got from the FFT but since my N (number of samples) is 2048, the maximum value here will be 1024 for a 1Vpeak waveform. That takes care of setting the amplitude of the fundamental. Now I have to generate it; I do that with the sin(2*pi()*incrementor*1/2048, one being the harmonic I'm trying to generate, in this case, the fundamental, divided by the N, the number of samples, 2048. Now for the phase. Here I convert the phase from cosine to sine, because I like things referenced to a sine wave, but like most FFTs, the Excel FFT gives you the phase relative to a cosine wave, and I am using the sin() function to generate my wave. I could use the cos() function and save myself a bit of work, but I like thinking in terms of sine waves. 2048 of these statements in column N will generate the fundamental for me.
To make the rest of the harmonics, I do the same thing, but use the appropriate values for them, so for the 2nd harmonic for example, I do this:
=2.2+(gain_factor*fft_mag_bin_2/1024)*SIN(2*PI()*incrementor*2/2048+(PI()/2+RADIANS(phase_bin_2))
I set the DC offset to 2.2 to offset it from the fundamental and then pick the FFT magnitude out for the 2nd harmonic in bin 2. In addition, because harmonics can be quite small, I added a cell ($AH$2) to be a gain_factor, so you can gain up the harmonics so you can actually see them. In the above Bullard plot, I gain the harmonics up by a factor of 100, otherwise you wouldn't see much action in this GIF animation. I don't bother doing that to the fundamental because the fundamental is usually pretty big. Then I generate a 2 cycle sine wave using the phase offset from bin 2 of the FFT data. I do this for every harmonic I want to show, and in the example file I generate 19 of these, for my own "super-sized" version I do it for 34 harmonics. That's usually enough to make a really pretty picture, like the one above.
The only thing I didn't mention here is the incrementor, that's just a standard feature I use in most of my spreadsheets, starts at zero, add one on each new row. Makes it easy to generate sine waves and things.
See how easy that is? Now you too can generate Bullard plots, and I prefer them in some ways to normal spectral plots. I considered calling them Fourier plots, but Fourier came up with the sine+cosine formula. It's only a rectangular to polar conversion, but my way makes it much simpler to understand for sure! For people who don't understand the FFT, the Bullard plot makes a lot more sense because it shows exactly how the wave becomes modified by the harmonics. See, I'm as brilliant as I am humble. You are welcome.