1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Calling function with no input argument

  1. Feb 10, 2012 #1
    Hi guys,

    I am going to ask another very stupid question. But surprisingly, I could not find any help on it on internet. My question is:

    I have defined a function which doesn't take any any input and one output. When I called it, the program halts. I have checked the function and it is working fine seperately. My be i am making mistake in calling it. Her is how I defined it:

    function [sumout] = sortabc()

    Here is how I am calling it:
    sumout = sortabc();

    Can anybody kindly tell me if I am making any mistake in calling ir defining the function sortabc.

  2. jcsd
  3. Feb 11, 2012 #2
    I guess you are talking Matlab, right?

    I don't use matlab, but I would like to think that I am a good detective since I do fine in my programming and debugging. So, here are some stupid suggestions, not knowing matlab and simply having done a google on function definitions in matlab:

    do you have a file named sortabc.m ?

    is matlab case sensitive?

    what does the file name look like from the file system?

    are you working on Windows or Linux?

    do you need to enclose the output argument in square brackets? like
    [sumout] = sortabc()
    or is that only needed when you have more than one argument?

    Otherwise, do what I refer to "baby steps" ...go back and define a trivial function that should work, like one that does nothing important but returns, say 9... and go from there...if that does not work, maybe something along what I asked above is happening?
  4. Feb 13, 2012 #3


    User Avatar

    Staff: Mentor

    The biggest mistake you are making is not having a manual or textbook in front of you and open at some pages of code, any code, where there is plenty of code statements for you to refer to. I suggest that you always do that.

    You don't say what you are coding in. But based on my extensive coding experience :tongue2:
    I can say what you wrote looks wrong or at least weird. (Though that's not to say it's not right.)
    Code (Text):
     Here is how I am calling it:
    sumout = sortabc();
    Okay, so you are assigning to a variable whatever is returned by your function sortabc.

    Code (Text):
    function [sumout] = sortabc()
    So I am perplexed to see this. I don't expect to see sumout mentioned in the function's definition, since I have already concluded sumout is a variable in your main program. And you seem to be telling the function to return the value of a call to function sortabc(). I'd expect to see you assign something to the function's name like:
    Code (Text):
    fuction sortabc()
    As I said, I don't recognize what you are programming in. But if you open a manual or something filled with lots of code, flip through it and you will soon find a working example of what you are wanting to do.
  5. Feb 21, 2012 #4
    I had the same problem, and similarly could not find an answer online. But here it is:

    Assuming you are using Matlab, you do not need the parentheses when you call the function. You defined it correctly (although you shouldn't need brackets):
    function sumout = sortabc();

    When you call a function with no inputs, do not use parentheses:
    sumout = sortabc;

    Using the same variable names shouldn't be a problem. Their domains don't overlap.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook