An amplifier changes the phase at different amplitudes of asignal. I am using amplifier data in a MATLAB model.

I have constructed a signal that is a sum of sinusoids of different frequencies with random phase.

When this signal passes through the virtual amplifier model, how do I adjust the phase?

Should I... (Option 1)

  • Decompose the signal with a fast fourier transform, which gives me the starting phase of each frequency and its absolute amplitude. Then reconstruct the signal by making sinusoids of each frequency in the signal (which will have the random phase it had to start), but now add the additional phase change caused by the amplifier as well?

Or... (Option 2)

  • Is this more complicated? If I have 3 frequencies in my signal, I imagine 3 phasors (phase-vectors) added head to tail in a chain, with the first one attached at an origin on a complex plane. They all spinning around their tails at their own frequency. (so the first one in the chain spins around the complex plane origin, the second one spins around the head of the first, and the third spins around the head of the second).
  • The absolute value and amplitude of my signal is the vector from the origin to the end point of the final phasor in the chain. Will the phase get added to this vector? Which is now what I said in the first part, the first option is where the phase is added to each phasor and not the overall phasor.

Please can someone assist


2 Answers 2


Caveat: many behavioral models of amplifiers exist, none of which is perfect, and I don't know what is best for your particular amplifier. But the most common model is basically your option 2. I have never heard of anyone using option 1.

Let $x(t)$ be the input to the amplifier in complex baseband form. A very common amplifier model is to assume that the gain is a memoryless function $g(|x(t)|)$ of the input amplitude, and the phase shift is also a memoryless function $\phi(|x(t)|)$ of the input amplitude. The complex baseband output is therefore

$y(t) = g(|x(t)|)\exp(j\phi(|x(t)|))x(t) $

This model assumes the signal is relatively narrowband.

There is no need to decompose the signal into its Fourier coefficients to perform this transformation, and indeed this only complicates the matter.

  • $\begingroup$ Hi, Thanks for your advice. But that equation you wrote for complex notation only works for sinusoidals - once I have 3 sinusoidals combined of different frequency, then my signal is no longer sinusoidal (but remains periodic). The problem I have is working out how to add phase to the 'overall phasor' in option 2. $\endgroup$ May 9, 2018 at 6:50
  • $\begingroup$ No, the model applies for general signals, not just for sinusoids - again, assuming the signal is relatively narrowband. The amplitude and phase shift are functions of the input signal's amplitude. If the signal is not narrowband, then you need a model that has memory. Can you provided a reference to the amplifier model that you are trying to use? $\endgroup$ May 9, 2018 at 17:30
  • $\begingroup$ Hi, How can that apply to general signals. exp(jϕ) = cosϕ + isin(ϕ) in words, its a single cosine with phase shift dictated by the sin function. How can I use it for representing a signal that is multiple cosines. $\endgroup$ May 10, 2018 at 13:06
  • $\begingroup$ This amplifier model assumes a complex baseband signal, as is generally the case in signal processing modeling. So the basis function we use is a complex exponential rather than just a cosine. If the signal is the sum of multiple complex exponentials, then $|x(t)|$ is the magnitude of the sum. The $\exp(j\phi)$ represents a phase shift. $\endgroup$ May 10, 2018 at 16:22

In addition to what has been said, you will be able to find more references by searching the term "AM/PM conversion"; i.e. the amplitude modulation of the input signal to the amplifier creates a phase modulation on the output.

Here is another answer describing some of the math, if you are interested.

The trick in applying the behavioral model that was described in Ill-Conditioned Matrix's answer is that you have to take your signal, which is a sum of sinusoids (a passband signal), and downshift to baseband first. The choice of carrier frequency is somewhat arbitrary, so long as the amplitude-dependent gain function $g(|x|)$ is defined for that frequency.

The function $g(|x|)$ should be complex-valued, and should return the gain (which is called "AM-AM conversion") and phase shift ("called AM-PM conversion") as a function of input amplitude.

Appendix C of this reference gives the mathematical background. Please read this and the references in it to get an idea of the broader context.

  • $\begingroup$ Hi Carlos, can you explain that a bit more please? I am using 20 and 21 Hz at the moment. Ive broken it up into IQ and added phase and amplitude modulation by doing thr math of combining it with a transfer characteristic of an amplifier that is also broken into IQ $\endgroup$ Jun 8, 2018 at 6:28
  • $\begingroup$ @Carlos_Danger forgot to tag you above comment $\endgroup$ Jun 8, 2018 at 6:37
  • $\begingroup$ You don't actually need to do anything to the signal other than shift it down to baseband, i.e. just shift it down by 20.5 Hz (the center frequency), then take that signal as input to the amplifier. $\endgroup$
    – Robert L.
    Jun 8, 2018 at 14:17
  • $\begingroup$ If you don't have the function $g(|x|)$, then you need to compute the Chebychev transform of your memoryless nonlinearity, as described in the references. $\endgroup$
    – Robert L.
    Jun 8, 2018 at 14:23
  • $\begingroup$ But if you have the power in/power out curves, express them in Watts and take the ratio of the two to get a power gain as a function of input power, then take the square root to get voltage gain, and this is $|g(|x|)|$. The phase shift you'd have to know from measurements as well, and you just tack that on. $\endgroup$
    – Robert L.
    Jun 8, 2018 at 14:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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