Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Creating a unit step function in Matlab

  1. Jan 30, 2009 #1
    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!
     
  2. jcsd
  3. Jan 30, 2009 #2
    Figured it out.

    Used the following code:

    n = -5 : 1 : -5

    y = (n >= 0)

    stem(n,y)
     
  4. Feb 11, 2009 #3
    I think recent versions of Matlab come with the function under the name heaviside (i.e. Heaviside step function.)
     
  5. Mar 16, 2010 #4
    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
     
  6. Jul 4, 2010 #5
    Hello,
    Please allow me to share a solution.

    Create your own m-file!
    Code (Text):

    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!
     
  7. Mar 13, 2011 #6
    hi
    how to define step function for initial condition in fully implicit finite diference methode?
     
  8. Feb 27, 2013 #7
    x=[-5:0 0:5];
    y=[zeros(1,6) ones(1,6)];
    plot(x,y)
     
  9. Feb 27, 2013 #8
    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
    :) :) :) :) :) :) :) :) :) :)
     
  10. Feb 27, 2013 #9
    sir can u tell me what you have done??
    what is y=(n>=0)
     
  11. Feb 28, 2013 #10

    jtbell

    User Avatar

    Staff: Mentor

    Necropost alert!

    Skybox's post is more than three years old, and he hasn't posted on PF at all in almost that long.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: Creating a unit step function in Matlab
Loading...