MATLAB Creating a unit step function in Matlab

AI Thread Summary
A user sought help in creating a unit step function in MATLAB for the range of -5 to 5, initially struggling after defining the interval with the command x = -5 : 1 : 5. They attempted to use an if statement to plot the function but encountered issues. Eventually, they resolved the problem by using the code n = -5 : 1 : -5 and y = (n >= 0), which effectively created the desired unit step function. Other users contributed by sharing their own implementations, including a custom m-file function that mimics the behavior of MATLAB's built-in heaviside function, which is available in versions R2009a and later. The discussion also touched on the use of the heaviside function and provided additional plotting examples, including a method for defining a step function with a shift.
skybox
Messages
37
Reaction score
0
Hi Guys,

I am trying to create a basic unit step function in Matlab that needs to be in the range of"
-5 <= x <= 5

I need this to be done via a function and not piece together using different intervals and it needs to show the whole -5 to 5 interval. I am just beginning in Matlab and am stuck on where to start after creating the interval, which I made by using the following command:

%create the interval
x = -5 : 1 : 5

If anyone can give me guidance on how to start after this, it would be greatly appreciated. I tried using an if function with the following logic:

if x > 0, plot the graph of the unit step of magntiude 1
if x < 0, just plot 0's from the interval -5 to 0

This does not seem to work. Any help would be greatly appreciated!
 
Physics news on Phys.org
Figured it out.

Used the following code:

n = -5 : 1 : -5

y = (n >= 0)

stem(n,y)
 
I think recent versions of Matlab come with the function under the name heaviside (i.e. Heaviside step function.)
 
Just in case anyone reads the last post, it is incorrect with regards to certain versions - the function heaviside is not defined in MATLAB 2008b, however i can't comment on any later versions than this
 
Hello,
Please allow me to share a solution.

Create your own m-file!
Code:
function [x]=unitstep(x)
%This is a unit step "function". The vector keeping track of time is the
%input. If time is negative then a zero is returned. If time is zero than
%0.5 is returned. If time is positive then 1 is returned.

if nargin==0 %demo the use of the function if no input is given
    x=-10:10;
end

x=x./abs(x); %this performs the same operation as the MATLAB "sign"
x(isnan(x))=0;

x=0.5*(x+1);

With regards to the other posts, to echo Tokipin, "heaviside" is indeed a defined function in Matlab, at least as recent as R2009a. My code performs exactly as the "heaviside", so I am being redundant if you have a recent version of Matlab. My last note: the Matlab "heaviside" function uses the same solution skybox suggests in its operation. Go skybox!
 
hi
how to define step function for initial condition in fully implicit finite diference methode?
 
x=[-5:0 0:5];
y=[zeros(1,6) ones(1,6)];
plot(x,y)
 
t=input('please enter the shift you want in unit step function\n');
x=[t-5:t t:t+5];
y=[zeros(1,6) ones(1,6)];
plot(x,y)
axis([-5 5 -1 2])
grid on
:) :) :) :) :) :) :) :) :) :)
 
skybox said:
Figured it out.

Used the following code:

n = -5 : 1 : -5

y = (n >= 0)

stem(n,y)
sir can u tell me what you have done??
what is y=(n>=0)
 
  • #10
Necropost alert!

Skybox's post is more than three years old, and he hasn't posted on PF at all in almost that long.
 

Similar threads

Replies
1
Views
4K
Replies
4
Views
1K
Replies
2
Views
3K
Replies
3
Views
2K
Replies
12
Views
4K
Back
Top