transmitter

Simulation of amplitude compression due to transmitter nonlinearity or adaptation of the pulse amplitude function to compensate for transmitter nonlinearity.

Syntax
signalOut = transmitter(signalIn,InputAmplitude,OutputAmplitude,'simulate')
signalIn = transmitter(signalOut,InputAmplitude,OutputAmplitude,'compensate')
Description

This function simulates the effect of a non-linear transmitter on the input signal shape or provides a signal compensated for the non-linearity that can be used to obtain the desired signal at the output of the transmitter.

If the 'simulate' option is selected for a given input signal, the output signal after a transmitter characterized by a power transfer curve described by InputAmplitude and OutputAmplitude is returned. The input signal needs to be provided on the scale given in InputAmplitude.

If the 'compensate' option is selected and the desired output signal is provided, transmitter() computes the input signal required to achieve this desired output signal after a transmitter characterized by the defined power transfer curve. The desired output signal needs to be provided on the scale given in OutputAmplitude.

Examples

Amplitude compression can be simulated as follows:

% Pulse
Par.tp = 0.120; % µs
Par.Type = 'gaussian';
Par.tFWHM = 0.040; % µs
[t,signal] = pulse(Par);

% Transmitter power transfer curve
InputAmplitude = 0:0.01:1; % relative scale, e.g. AWG output amplitudes
OutputAmplitude = 15*(InputAmplitude-0.3*InputAmplitude.^3); % MHz

% Computation of the compressed output signal
AWGsignal = signal/max(signal); % IQ signal on AWG input scale (maximum output amplitude)
compressedsignal = transmitter(AWGsignal,InputAmplitude,OutputAmplitude,'simulate');

The output compressedsignal corresponds to the expected output signal after the transmitter and in this case has a maximum intensity corresponding to the maximum of OutputAmplitude.

The input pulse shape required to obtain an undistorted pulse with the maximum possible amplitude after the transmitter can be obtained as follows:

% Pulse
Par.tp = 0.120; % µs
Par.Type = 'gaussian';
Par.tFWHM = 0.040; % µs
[t,signal] = pulse(Par);

% Transmitter power transfer curve
InputAmplitude = 0:0.01:1; % relative scale, e.g. AWG output amplitudes
OutputAmplitude = 15*(InputAmplitude-0.3*InputAmplitude.^3); % MHz

% Computation of the required input signal to obtain the desired output signal
Outputsignal = max(OutputAmplitude)*signal/max(signal); % undistorted gaussian pulse with maximum amplitude
AWGsignal = transmitter(Outputsignal,InputAmplitude,OutputAmplitude,'compensate');
Algorithm

The power transfer curve used by transmitter() is obtained from the provided input and output amplitudes using a 4th order polynomial fit constrained at the origin (see Doll, A., Pribitzer, S., Tschaggelar, R., Jeschke, G., Adiabatic and fast passage ultra-wideband inversion in pulsed EPR, J. Magn. Reson. 230, 27-39 (2013), DOI: 10.1016/j.jmr.2013.01.002).

See also

pulse, resonator, rfmixer