Sampling a Signal in Matlab

Generating a continuous signal and sampling it at a given rate is demonstrated here. In simulations, we may require to generate a continuous time signal and convert it to discrete domain by appropriate sampling.

For baseband signal, the sampling is straight forward. By Nyquist Shannon sampling theorem, for faithful reproduction of a continuous signal in discrete domain, one has to sample the signal at a rate \(f_s\) higher than at-least twice the maximum frequency \(f_m\) contained in the signal (actually, it is twice the one-sided bandwidth occupied by a real signal. For a baseband signal bandwidth (\(0\) to \(f_m\)) and maximum frequency \(f_m\) in a given band are equivalent).

Matlab or any other simulation softwares  process everything in digital i.e, discrete in time. Therefore, we cannot generate a real continuous-time signal on it, rather we can generate a “continuous-like” signal by using a very very high sampling rate. When plotted, such signals look like a continuous signal.

Let’s generate a simple continuous-like sinusoidal signal with frequency \(f_m\) = 10kHz. In order to make it appear as a continuous signal when plotting, a sampling rate of \(f_s\)=500kHz is used.


Continuous time signal in Matlab
Continous time signal in Matlab

Pretending the above generated signal as a sinusoidal signal, we would like to convert the signal to discrete-time equivalent by sampling. By Nyquist Shannon Theorem, the signal has to be sampled at at-least \(f_s=2*f_m=20 kHz\). Let’s sample the signal at \(f_{s1}=30kHz\) and then at  \(f_{s1}=50kHz\) for illustration.

Sampling a Continuous time signal in Matlab
Sampling a Continous time signal in Matlab

  • PTM

    I think there is a little mistake in code comments and plots: sampling frequency is fs1=30kHz and fs2=50kHz (not 3kHz and 5kHz).

    • Thanks for spotting that. Will correct the mistake

      • Richa Shrivastava

        How to sample a randomly generated analog signal in matlab?