I have a MATLAB script for modelling a two tone signal (a sum of two sinusoids) going through a non linear transfer function (such as an amplifier). The amplitude of a signal is amplified non linearly, and also the phase is modified depending on the input power of the signal.
The two sinusoids used are at 20 Hz and 21 Hz.
With just amplitude modulation, the output spectrum looks as expected (first two plots) Its non linear so 3rd order and fifth order intermods can be seen around the frequency of the two sinusoids, aswell as harmonics. I know the amplitude modulation is correct because I obtain the correct third order intercept for the amplifier model. Upper graphs are in volts, lower graphs in dB Watts
However, when phase is adjusted depending on the input signal power, the spectrum looks like this... and my fifth order intermods are lost (again upper graph in volts, lower graph in dBW)
I have an idea but I am not confident with the explanation of this and was hoping someone with a trained eye can assist or offer advice
How its coded --> My script looks at each point on the input signal, reads its amplitude and adds a phase adjustment to it during reconstruction of the signal, as shown in the phase transfer plot below (which shows the effect the equipment will have on any signal going through it). So if the amplitude (input power) of the signal is -70 dBW then a phase of 0.01 radians is added to the reconstructed signal at that exact point... then it looks at the next sample point and adds a phase to that. So if the amplitude of the wave is at -70dBW then the reconstructed waveform is cos(2*pi*f + 0.01). Adding 0.01 in phase is an I and Q modulation when cos(2*pi*f + 0.01) is written with the trig identity to get the IQ form.
Look at the input signal, output signal and the phase deviation added to the signal in time domain... it looks good