Why do I get only odd harmonics appearing? This not only happens at saturation of the transfer curve, but also in the linear portion of the curve.

I make a input signal that has too high power that it will saturate the transfer curve. The transfer curve below is for Amplitude modulation, I also have a transfer curve of the output phase change for each input signal level.

This is basically how I do it

My input signal, x(t), is the sum of two sine waves

For each point on the transfer curve above I apply Amplitude and Phase modulation by using this array

modulating_phasor[] = (power_out / power_in) * exp(i*phase_deviation)

Then I look at my input signal and lookup where its value matches the input power of the transfer curve and use that location in the modulating_phasor array

output_signal[] = x[t] * modulating_phasor[location]

This makes the output signal complex array so I take the absolute value and for parts that should be negative, I multiply that location on by -1 by finding the correct location on input signal.

I cant upload my code... but you get the idea of what I am doing right?

Now this is my output and no matter what my input level on my signal is i.e. whether I am in the non-linear part or linear part, I always get odd harmonics. I've also tried a different transfer curve. Only get odd again.

enter image description here enter image description here

  • $\begingroup$ You say that "the input is the sum of two sine waves"; but the "time domain input signal" plot looks like AM, and the "time domain input signal spectrum" looks like a single sine wave. Can you clarify? $\endgroup$ – MBaz May 23 at 14:59
  • $\begingroup$ This code is this f = (200:1:201); for c=1:length(f) sinusoids(c,:) = cos(2*pi*f(c).*n) ; end signal=sum(sinusoids); $\endgroup$ – Natalie Johnson May 23 at 15:10

An ideal amplifier would have a transfer characteristic of $f(x)=Ax$: the input signal comes out amplified and otherwise undistorted. A real amplifier will deviate from this and go into saturation. We could model it by a polynomial $f(x) = \sum_{n} a_n x^n$. Now, what we would still expect is that the amplifier treats positive and negative values the same way, i.e., it is symmetric in the sense that $f(-x) = f(x)$. This leads to the requirement $a_n = 0$ for all even $n$.

Now, one can show that raising a sinusoidal with frequency $f_0$ to the $n$-th power generates harmonics up to order $n$, however, preserving their oddity:

  • $n = 2$ generates frequencies 0 and $2f_0$
  • $n = 3$ generates frequencies $f_0$ and $3f_0$
  • $n = 4$ generates frequencies 0, $2f_0$ and $4f_0$
  • $n = 5$ generates frequencies $f_0$, $3f_0$ and $5f_0$

and so on. It's a consequence of the binomial theorem and quite easy to show (see, e.g., here).

In short: A transfer function that is odd symmetric will generate only odd harmonics. This is why you are seeing only those.


I don't completely understand what you're doing with the lookup part, but if you're multiplying this transfer function in the time domain, then I think it makes sense that you're adding harmonics. If you look at the frequency response of a triangular wave (https://en.wikipedia.org/wiki/Triangle_wave), it is made up of decaying odd harmonics, so even if x(t) were constant, I'd expect you'd still see the harmonics. If you set x(t) to a constant, you could see what the frequency response of the transfer function itself is. I believe applying a triangular window function (https://en.wikipedia.org/wiki/Window_function#Triangular_window) would have a similar effect.


Your question is a bit confusing (see my comment), but I'll mention here some general properties of non-linear systems that might be relevant.

The simplest way to characterize the response of a memoryless non-linear system is with a power series. If the input is $x(t)$, then the output is $$ y(t) = a_0 + a_1 x(t) + a_2 x^2(t) + a_3 x^3(t) + \ldots $$ where the coefficients $a_i$ depend on each particular system.

Systems such as amplifiers that have a linear region around 0, but then saturate, typically have small or zero $a_0, a_2, a_4,\ldots$ and relatively large $a_1, a_3, a_5,\ldots$. Then, if the input is $\cos(2\pi f_0 t)$, the output has terms of frequency $f_0$, $3f_0$, $5f_0$, etc. This may explain what you are seeing.

If the input is the sum of two sinusoids of frequencies $f_0$ and $f_1$, then you'll see terms with the sum and difference of the frequency, some of first order: $f_0+f_1$, $f_0-f_1$, and some of third order: $2f_0 \pm f_1$, $2f_1 \pm f_0$, etc. These are called "intermodulation products".

If the input is an AM signal, then you get even more complicated interactions. However, you can derive them all from the power-series model above, with a bit of algebra and trigonometry.

  • $\begingroup$ Using this method doesn't allow applying non linear phase modulation. Basically I needed to create a modulating AM and PM phasor that amplifies each point of the input signal. The phasor is built from the amplifier transfer curves. $\endgroup$ – Natalie Johnson May 23 at 15:14
  • $\begingroup$ What I see in your plots is an AM input and a clipped AM output. The power-series model explains why you see odd harmonics in that case. I don't understand the non-linear phase part of your question; I'd suggest writing the equations or inlining your code to make yourself clearer. $\endgroup$ – MBaz May 23 at 15:29

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.