This is currently my pet project but I am a bit stuck on some problems.

First I'll go over my idea for the Fourier Transform: The Fourier Transform is defined as

\$F(\omega)=\int^{\infty}_{-\infty}d\omega\ e^{i\omega x}f(x)\$

As it is difficult to make a complex exponential signal, I decided to replace the complex exponential via Euler's equation:

\$ e^{i\omega x}=\cos(\omega x)+i\sin(\omega x)\$

The design goes as follows:

I will have two voltage sources (each being a sine and cosine signal respectively) and a third voltage source as the signal I want to transform. I split the third signal in two, and I take the log of each of the four signals but putting them into a log amplifier. From there I add one of the split signals to the sine signal, and the other to a cosine signal. From there I send the two remaining signals into a exponentiation circuit and add the two (thus multiplying the complex exponential and the signal of interest. Then I send it into yet another op amp to integrate it, thus completing my Fourier Transform Circuit.

Well not quite. There are two issues with this (hopefully my above explanation makes sense). The first is that, although I have a cosine and a sine to replace my complex exponential function, I still have to deal with the fact that my sine function should be multiplied by \$i\$ in order for it to be accurate.

The second issue is that, even if I do figure out the first, I am only transforming my input signal under one frequency value. How would I do it for a spectrum of frequencies? In other words, is there a circuit that allows me to continuously change the frequency of a signal?

Now I will go over my Laplace Transform idea:

This is similar to the Fourier Transform, only you integrate half of the real line and you integrate your signal with respect to an exponential decaying function.


This is all good as I can just have a charged RC circuit and multiply the signal of interest and the RC circuit signal via the same method described above (through logarithmic addition and exponentiation via op amps).

My only problem with this however, is that again, I am only transforming under one S value (under one \$\frac{1}{RC}\$ value). Is there a way to continuously change the capacitance or resistance values that is not mechanical? I am afraid that sticking a potentiometer and changing it mechanically would be unreliable and unreasonable.

Or maybe I am going about this completely the wrong way? What do you guys think?

Note that I am doing this because I know digital solutions exist such as the FFT via an arduino board or something. I would like to do this using analog circuits.

  • 2
    \$\begingroup\$ The FFT is a specific algorithm for computing a discrete Fourier transform. What you want to do is compute the Fourier transform (or an approximation thereof) using analog techniques rather than digital techniques. I suggest you research the architecture of spectrum analyzers, because they do exactly what you are trying to do. I believe they generate a reference signal which sweeps the frequency of interest, and they run it through a 90 degree phase shifter. Both the reference signal, and the phase shifted reference signal are mixed with the incoming signal. Out of space. go to google. \$\endgroup\$ – mkeith Jun 11 '15 at 22:12
  • \$\begingroup\$ you can't really generate complex signals anyway, that's just mathematical abstracion \$\endgroup\$ – Vladimir Cravero Jun 11 '15 at 22:15
  • \$\begingroup\$ Ya, I was thinking that maybe I would be able to put in something with impedance because technically, there is a complex number in there. But I am sure it would mess up my input signal. Also, I had no idea spectrum analyzers existed (I am new to electronics). Thanks. \$\endgroup\$ – firest Jun 11 '15 at 22:41
  • \$\begingroup\$ @Vladimir Cravero: if that'd be true you couldn't create real signals either (or did anybody ever implement equivalence classes of Cauchy sequences in an electronic circuit?). So real numbers are just an abstraction too. Quadrature signal pairs (I and Q) are nothing alse but complex signals. \$\endgroup\$ – Curd Feb 9 '18 at 11:04
  • \$\begingroup\$ @Vladimir Cravero, a phase shift is merely a signal propagation delay, a signal is given as sin(w0*t + tau), tau is your phase shift. and can also be expressed as sin(w0(t + t0)) where t0 is the signal propagation delay \$\endgroup\$ – Garret Gang Oct 31 '18 at 22:06

I think you are going about it the wrong way. Think about what a Fourier transform does: It takes a time-domain signal and converts it to a frequency-domain signal. So what you want to end up with is a set of frequencies with individual amplitudes. Phase can be done also, but it's more tricky and rarely needed in my experience so I'll skip it for now.

Okay, so we want to take an analog signal on one wire and measure its amplitude in each of X frequency bands. Now it's easy. Just distribute the signal to X bandpass filters and measure the amplitude coming out of each. Like this:


simulate this circuit – Schematic created using CircuitLab

There's even a full-documented project for this here: https://sound-au.com/project136.htm

  • \$\begingroup\$ I considered something like this but I was afraid it would be impractical as I was going more for a continuous spectrum. Well I guess I should start simple anyways. Thank you! \$\endgroup\$ – firest Jun 11 '15 at 22:43
  • \$\begingroup\$ If you get enough bands, then it might as well be continuous, right? Even Fourier has that problem. \$\endgroup\$ – AaronD Jun 11 '15 at 22:46
  • \$\begingroup\$ Good point, but how much is enough? I suppose it depends on the frequency range in question. \$\endgroup\$ – firest Jun 11 '15 at 22:51

"you can't really generate complex signals anyway, that's just mathematical abstracion"

Feel free to correct me if I'm wrong... The multiplier of the complex part is the phase of the concerned sine, isn't it? In the FFT, when you look at wave nr 2/n, where n is the index in the sequence, for instance: 2.0 + 0.5i... 2.0 is the amplitude of that sine and 0.5 the phase shift. So basically in an analogue realm you can create the imaginary part if you ignore the i (or j in some notations).


Using filter banks is the simplest option. You may consider restructuring the mechanical model of Albert Michelson's Harmonic Analyzer in electrical terms. i.e. spring with an RC circuit, etc.


Lets say you did want to follow this line of reasoning. You may in fact some reason for it, like if you wanted to be able to get the Fourier coefficient for any arbitrary w, and not just the nearest w sampled with a band pass filter.

To fix the problem with the imaginary component, use Fourier original transform, the "sin and cosine transform" (click for wiki link). The imaginary component just changes one of the basis vectors, sin to i sin. The Fourier transform aims to find the coefficients, which will scale the basis vectors appropriately to match your function. What this means is that the coefficient you will calculate for sin will have picked up the i. For real valued signals, that means that your result should come out real, if I am not mistaken. TLDR: i is just a constant scaling factor that will be absorbed into your output, just use the Fourier's original transform.

As for measuring the Fourier transform for multiple values, just sweep w. Of course, you will have to do the x sweep for integration before you sweep w appreciably.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.