# Signal Generation in MATLAB

## Signal Generation in MATLAB

Contents

Here I’m going to show you how signals can be generated in MATLAB. If you are a newbie in this field, have a look at our MATLAB tutorials to get familiar with it.

# Plotting of Discrete and Continuous signal

The 2 main functions for plotting are

• plot() function  For plotting Continuous signal
• stem() function – For plotting Discrete signal

stem() – 2-D plot function for plotting discrete sequence of data

SYNTAX :

1. stem(y) – Plots the data sequence y specified equally spaced along x axis
2. stem(x,y) – Plots x versus the columns of y. x and y must be of same size
3. stem(…,’fill’) – If we want to fill the marker at the end of stem
4. stem(…,LineSpec) – For specifying line style and color

## Plotting an Array of Data

```x=[1 2 3 4];
subplot(2,1,1); # refer NOTE
plot(x,'ro-');
title('Continuous');
subplot(2,1,2);
stem(x);
title('Discrete');```

Output : NOTE:

• subplot() – is a function MATLAB which allows us to draw 2 or more graphs simultaneously on a single figure window. The function breaks the figure into matrix specified by user and selects the corresponding axes for the current plot SYNTAX : subplot(m,n,p) – Divides the figure window into m x n matrix of small axes and selects the pth axes object for the current plot. eg :  subplot (2,2,1) – divides the figure into a 2 x 2 matrix (4 equal parts) and selects 1st axes object.
• The important point to be noted while dealing with the array data is MATLAB index starts with 1,  ie  by default MATLAB always assumes x(1) as the first element of the array [in above eg: x(1)=1]. So if we have to change the time index we have to define the range.

eg:

```x=[1 2 3 4];
dtx=-2:1; #defining discrete time for x, from -2 to 1
subplot(2,1,1);
plot(dtx,x,'ro-');
title('Continuous');
subplot(2,1,2);
stem(dtx,x);
title('Discrete');```

Output :

### Plotting a Function

Now lets plot a function continuously and discretely. I’m going to plot a sine function

```x=linspace(0,2*pi,25); # 0 to 2pi is divided in 25 equidistant points
y=sin(x);
subplot(2,1,1);
plot(x,y,'r');
title('Continuous');
subplot(2,1,2);
stem(x,y);
title('Discrete');```

Output :

## Some Basic Test Signals

While generating signals its range has to be specified it can be done in 2 ways

• Directly specifying range value
eg: -5:5 ; 0:10 etc
• Can be specified during the runtime of the program using the input function in MATLAB.

SYNTAX :

input( ‘string’); # returns the input value

Now lets generate same basic test signals.

### I. Impulse function

Impulse function given by
∂ (t) = { 1   for  t=0   ; 0 otherwise }

```n1=input('Lower limit')
n2=input('Upper limit')
x=n1:n2;
y=[x==0];
stem(x,y,);```

Output :

### II. Unit Step Signal

u(t)={ 1 for t >=0 ; 0 for t< 0 }

#### Discrete

```n1=input('Enter the lower limit');
n2=input('Enter the upper limit');
n=n1:n2;
x=[n>=0];
stem(n,x);
title('Unit Step Signal - Discrete');```

#### Continuous

```n=input('Enter the upper limit');
t=0:n;
x=[t>=0];
plot(t,x);
title('Continuous');```

### III. Unit Ramp Signal

r(t)={ t  for t >= 0 ; 0  for t <0 }
Recall that ramp signal  r(t)=t*u(t) where u(t) is unit step signal

```n1=input('Enter lower limit');
n2=input('Enter upper limit');
n=n1:n2;
x=n.*[n>=0];
subplot(2,1,1);
plot(n,x,'r');
title('Continuous');
subplot(2,1,2);
stem(n,x,'b');
title('Discrete');```

Output:

#### Shortcut method for Generating Ramp Signal

```n=input('Enter the upper limit')
t=0:n;
subplot(2,1,1);
plot(t,t);
title('Continuous');
subplot(2,1,2);
stem(t,t);
title('Discrete');```

Output :

### IV. Unit Exponential signal

x(t)= eat

```n1=input('Enter lower limit');
n2=input('Enter upper limit');
t=n1 : n2;
a=input('Enter the value for a');
y=exp(a*t);  # exp() function in matlab SYNTAX : exp(a)n- returns the exponential factor of a
subplot(2,1,1);
plot(t,y,'r');
title('Continuous');
subplot(2,1,2);
stem(t,y,'b');
title('Discrete');```

Output :