MATLAB: What are the options I have for modelling amplitude modulation of a low frequency signal with a very high frequency (GHz range) carrier in Simulink

amplitudecarrierCommunications ToolboxfrequencyhighModulation

What are the options I have for modelling amplitude modulation of a low frequency signal with a very high frequency (GHz range) carrier in Simulink?  
 

Best Answer

The Communications System toolbox does have some Simulink blocks and MATLAB functions which can be used to implement amplitude modulation.  But all these blocks require you to specify a sampling frequency, i.e. the input signal must be discrete.   Please refer to the attached simple model built using MATLAB R2017a, which uses 'DSB AM Modulator' block to modulate a baseband signal ( freq = 2000 Hz, and Sampling rate = 2*14 MHz) with a carrier frequency of 13 MHz,  and plots the frequency spectrum. As you can see from the model, the sampling rate needs to be  very high ( > twice the carrier frequency) to implement this workflow.  The simulation only runs for 100 microseconds time, as otherwise the data sizes would be too large at this sampling rate. Please refer to the documentation link below for additional information - 
Having said that, here are some possible options to implement the basic analog Amplitude Modulation in Simulink with a carrier signal of very high frequency - 
 
1. If you choose to use the DSB AM Modulator block - 
        a. If you choose a sampling frequency satisfying the Nyquist criteria (>2*13 MHz), then you will have to keep the simulation time very less ( @28 MHz sampling rate the number of fixed-step samples for 100 microseconds simulation time would be 2,800).  So, if you chose a longer simulation time the output samples would be very large and you may run into memory issues. 
       b.  You can still use the same carrier frequency at a lower sampling rate (e.g. 5000 Hz) to decrease the number of simulation time steps, using the Amplitude Modulation block.  But, if you are plotting the spectrum of the data, you need to be careful about how the frequency axis is constructed, as the output  spectrum would be the aliased analog frequency spectrum.  
2. You can implement a direct multiplication with the carrier signal, (e.g. multiply the signal by exp(j*2*pi*fc*t, where fc is the carrier frequency) with your signal to model the modulation. In this case you need to be careful while defining your time vector as an input into the exponential term. The time vector 't' should be the same as the simulation time vector. 
3. You can use the RF blockset to model high frequency signals in Simulink.  Please refer to the following documentation for a relevant example -