# 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.

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.

• 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?