InterludeAmplitude Modulation
A classic application of signals and systems is the analysis of communication systems. Amplitude modulation is the simplest way of increasing the frequency of a signal one wishes to transmit. We can use questions related to amplitude modulation to good advantage in demonstrating some forms of representing signals in Signals and Systems. Note that many of the following inputs use Fourier transforms, which are documented in detail in Chapter 5.
Begin by making the signal processing routines available.
In[1]:=Needs["SignalProcessing`"]
Amplitude modulation consists of multiplying a relatively slowly varying signal by a relatively quickly varying periodic signal. The frequency response of the combined signal is equivalent to the frequency response of the slowly varying signal shifted by the frequency of the rapidly changing signal in the positive and negative directions.
Given an abstract signal x[t] whose frequency response is defined as X[w], we can find the frequency response of the modulated signal.
In[2]:=FourierTransform[x[t] Cos[wc t], t, w, TransformPairs > {x[t] :> X[w]} ]
Out[2]=
The ability of Signals and Systems to perform symbolic manipulation allows us to demonstrate the characteristics of modulation with abstract signals. We can also employ concrete signals.
If the signal is perfectly bandlimited, we choose a frequency for the quickly varying signal (known as the carrier) that is much higher than the bandwidth of the signal to be modulated (which is called the message signal).
Here is an ideal frequency response of a signal of bandwidth 2 a.
In[3]:=fresp = ContinuousPulse[2 a, w + a];
This is what the response looks like, if we let a go to .
In[4]:=SignalPlot[fresp/.a > 1, {w, 4, 4}]
Out[4]=
Here is the signal matching the frequencydomain pulse.
In[5]:=sig = InverseFourierTransform[ fresp, w, t ]
Out[5]=
This is the response of the modulated transform. The input is expressed in operator form to demonstrate the operator notation.
In[6]:=mfresp = EvaluateOperators[ FourierTransform[t, w][ sig Cos[wc t] ] ]
Out[6]=
If we let the bandwidth remain and set the carrier frequency to , this is what the frequency response of the modulated signal looks like.
In[7]:=SignalPlot[mfresp/.{a > 1, wc > 10}, {w, 15, 15} ]
Out[7]=
Demodulation of the transmitted signal can be achieved by multiplying the modulated signal by the same modulating carrier, and passing the result through a lowpass filter.
This is equivalent to finding the frequency response of the modulated signal multiplied by the modulating carrier signal.
In[8]:=demodfresp = FourierTransform[ sig Cos[wc t]^2, t, w ]
Out[8]=
This is what the frequency response of the demodulated signal looks like before it is passed through a lowpass filter.
In[9]:=SignalPlot[demodfresp/.{a > 1, wc > 10}, {w, 25, 25} ]
Out[9]=
Demodulation by the technique of multiplying by the modulating signal is called synchronous demodulation, and requires that the local carrier be precisely in phase with the transmitting carrier. This can be very difficult, so an alternate technique of modulation involves adding a DC offset of more than half the maximum amplitude of the message signal to the message signal before modulation. In this case, the envelope of the transmitted carrier corresponds to the message signal.
Here is a modulated shifted sinusoid, plotted with the unmodulated shifted sinusoid. We see that the unmodulated signal follows the envelope of the modulated signal when the offset A is large enough.
In[10]:=SignalPlot[{(Sin[t] + A) Cos[wc t], Sin[t] + A}/. {A > 2, wc > 10}, {t, 0, 10}, PlotStyle > {GrayLevel[0], Dashing[{0.05}]} ]
Out[10]=
The frequency response of the signal changes a bit when the transmitted carrier technique is used.
Here is the frequency response of a signal with bandwidth 2 a.
In[11]:=X[a_, w_] := Abs[w] ContinuousPulse[2 a, w + a]
We can find the frequency response of the modulated signal. Here, the transform routines don't know the transform of the signal, but we can specify it explicitly by the TransformPairs option.
In[12]:=fresp = FourierTransform[ (x[a, t] + A) Cos[wc t], t, w, TransformPairs > {x[a, t] :> X[a, w]} ]
Out[12]=
Note the existence of an impulse at the carrier frequency.
In[13]:=SignalPlot[ fresp/.{A > 2, a > 4, wc > 10}, {w, 15, 15} ]
Out[13]=
Two signals can be carried in the same frequency band by a technique known as quadrature amplitude modulation (QAM). This is a result of the orthogonality of sine and cosine. We modulate the first signal to be transmitted by a cosine wave at the carrier frequency, and the second by a sine wave.
Here we assign the quadrature modulation of two abstract signals f1 and f2 to modsig.
In[14]:=modsig = f1[t] Cos[wc t] + f2[t] Sin[wc t];
We see that the frequency response of the quadrature modulated signals shows the characteristic shifting for each signal.
In[15]:=ftrans = FourierTransform[ modsig, t, w, TransformPairs > {f1[t] :> F1[w], f2[t] :> F2[w]} ]
Out[15]=
To demodulate, we multiply the modulated signal by each of the carrier signals in turn, and pass the result through a lowpass filter.
This is the frequency response of the demodulation of the first signal. Note the strong unshifted presence of the term F1.
In[16]:=dmod1 = FourierTransform[ modsig Cos[wc t], t, w, TransformPairs > {f1[t] :> F1[w], f2[t] :> F2[w]} ]
Out[16]=
We can perform a similar operation for the second signal. The only unshifted component of the frequency response corresponds to f2.
In[17]:=dmod2 = FourierTransform[ modsig Sin[wc t], t, w, TransformPairs > {f1[t] :> F1[w], f2[t] :> F2[w]} ]
Out[17]=
We can visualize the transformations that occur to the frequency response of the input signals. First, we define response for the individual signals as concrete functions that can be plotted.
We will let the frequency response of the first signal look like a pulse with a notch in it, and the let the second signal have a sinusoidal response.
In[18]:=(F1[w_] := Abs[w] ContinuousPulse[8, w + 4]; F2[w_] := 4 Cos[Pi/8 w] ContinuousPulse[8, w + 4])
Let the carrier frequency be . The frequency response then has real and imaginary components corresponding to the first and second signals, respectively. The real part of the response is indicated by the solid line, and the imaginary part by the dashed line.
In[19]:=SignalPlot[ftrans/.wc > 10, {w, 15, 15}]
Out[19]=
The response of the demodulated signal contains the original signal scaled in amplitude. Note that we still need to run this through a lowpass filter to retrieve the input signal. If the plot range is extended, artifacts are found at double the carrier frequency.
In[20]:=SignalPlot[dmod2/.wc > 10, {w, 15, 15}]
Out[20]=
These are just a few of the operations and problems that can be handled by Signals and Systems. Both abstract symbolic and concrete signals can be manipulated and displayed.
