MATLAB Answers

0

Why do I get the error '??? Output argument ‹variable› (and maybe others) not assigned during call to ‹function›.' ?

Why do I get the following error message :
??? Output argument ‹variable› (and maybe others) not assigned during call to ‹function›.

Tags

No tags entered yet.

Products

3 Answers

Answer by MathWorks Support Team on 20 Feb 2019
 Accepted Answer

Explanation:
One of the functions you have called is defined to return an output argument but that output argument does not exist in the function when it tries to return.
Common causes:
You have misspelled the name of one of your output arguments inside your function, or you have forgotten to assign a value to one of the output arguments of your function. Alternatively, the function was originally written with one or more output arguments, but the section of the function that computed the output argument was removed or modified in such a way that the output argument is now extraneous.
Solution:
Stop MATLAB on the last line of the function listed in the warning or error message. Verify that each of the output arguments listed in the function declaration line at the beginning of the function exist after that last line is executed (using the DBSTEP function or the Step button in the Editor). If the arguments do not exist, examine the function to determine where you intended the arguments to be declared. Verify that those lines of code are being executed and have no typographical errors.
Example demonstrating this error:
OutputNotAssigned.m

  2 Comments

I had the similar problem. The problem was I used the clear all at some point in the function so the output variable was cleared.
I had a similar problem, but your example helped clear it up, thanks!

Sign in to comment.


Answer by Beginner Dave on 11 Feb 2018

I also had the problem. After confirming the argument spelling, the problem persisted. I found a misplaced "end" in my function. After moving the "end" to the correct line, the problem was solved.

  1 Comment

Sign in to comment.


Answer by Mengshan Xu on 9 Mar 2018

One more point. if you have "return" under some "if" in your function. it my cut out your process before other output arguments are assigned. It might cause such situation.

  3 Comments

I have the same problem. Is there any solution or any other approach to this issue?
Thank you!
The general solution is to initialize all of your output arguments to something as the first thing you do. Then if you return() early you can be sure that they have been initialized.
It is not uncommon to encounter this kind of problem in situations in which you are checking the input arguments and if you find a problem then you return an error status in one of the arguments and then return, not having assigned to the other output arguments. That kind of situation is typically better handled by using error()
When you encounter this error, there is almost always an error in the logical of your code, a situation that you did not expect, such as having used an "if" on what you were thinking was going to be a scalar but turns out to be a vector.

Sign in to comment.