Generating basic discrete-time signals for Discrete-Time Signal ProcessingUnit Step, Unit Impulse, Unit Ramp, exponential signals are very commonly used signals in signal processing to perform various operations.
- Unit step signal is given by
- Unit impulse signal is given by
- Unit ramp signal is given by
- Exponential signal is given by
Examples:
Input : Unit Step Signal u[n-2] Output :
Input : Unit Impulse Signal d(4) Output :
Input : Unit Ramp Signal Output:
Input: Exponential signal for a=2 Output:
Python3
# importing libraries import numpy as np
import matplotlib.pyplot as plt
# function to generate unit step u[n-a] # LL and UL are lower and upper limits of discrete time line def unit_step(a, n):
unit = []
for sample in n:
if sample<a:
unit.append( 0 )
else :
unit.append( 1 )
return (unit)
# plot unit step function u[n-a] a = 2 # Enter delay or advance
UL = 10
LL = - 10
n = np.arange(LL, UL, 1 )
unit = unit_step(a, n)
plt.stem(n, unit) plt.xlabel( 'n' )
plt.xticks(np.arange(LL, UL, 1 ))
plt.yticks([ 0 , 1 ])
plt.ylabel( 'u[n]' )
plt.title( 'Unit step u[n-a]' )
plt.savefig( 'UnitStep.png' )
# Function to plot Impulse signal d(a) def unit_impulse(a, n):
delta = []
for sample in n:
if sample = = a:
delta.append( 1 )
else :
delta.append( 0 )
return delta
a = 4 # Enter delay or advance
UL = 10
LL = - 10
n = np.arange(LL, UL, 1 )
d = unit_impulse(a, n)
plt.stem(n, d) plt.xlabel( 'n' )
plt.xticks(np.arange(LL, UL, 1 ))
plt.yticks([ 0 , 1 ])
plt.ylabel( 'd[n]' )
plt.title( 'Unit Impulse d[4]' )
plt.savefig("UnitImpulse.png") # Function to generate unit ramp signal r(n) # r(n)= n for n>= 0, r(n)= 0 otherwise def unit_ramp(n):
ramp = []
for sample in n:
if sample< 0 :
ramp.append( 0 )
else :
ramp.append(sample)
return ramp
UL = 10
LL = - 10
n = np.arange(LL, UL, 1 )
r = unit_ramp(n)
plt.stem(n, r) plt.xlabel( 'n' )
plt.xticks(np.arange(LL, UL, 1 ))
plt.yticks([ 0 , UL, 1 ])
plt.ylabel( 'r[n]' )
plt.title( 'Unit Ramp r[n]' )
plt.savefig("UnitRamp.png") # Function to generate exponential signals e**(at) def exponential(a, n):
expo = []
for sample in n:
expo.append(np.exp(a * sample))
return (expo)
a = 2
UL = 1
LL = - 1
n = np.arange(LL, UL, 0.1 )
x = exponential(a, n)
plt.stem(n, x) plt.xlabel( 'n' )
plt.xticks(np.arange(LL, UL, 0.2 ))
# plt.yticks([0, UL, 1]) plt.ylabel( 'x[n]' )
plt.title( 'Exponential Signal e**(an)' )
plt.savefig("Exponential.png") |
Time Complexity: O(n)
Auxiliary Space: O(n)
Article Tags :