problem in return of function
5 views (last 30 days)
Hi, I have the following code
In case of a be >1 I got this error message: Error in ==> test2 at 2 if a>1
??? Output argument "d" (and maybe others) not assigned during call to
[EDITED, Jan, code formatted]
Star Strider on 1 Sep 2012
Edited: Star Strider on 1 Sep 2012
If it is not always necessary for you to return a value for ‘d’, you might consider using the nargout function.
if (nargout > 1) && (a > 1)
elseif (nargout == 1) && (a <= 1)
So if your calling function calls test2 with (a <= 1), only needs ‘c’ and does not need ‘d’, this version of your function would only return a value for ‘c’. You would not generate the error. You can experiment with different options.
Image Analyst on 1 Sep 2012
Edited: Image Analyst on 1 Sep 2012
So when you pass in a value of a less than 1, what value does d have? Think about it. It could be written more robustly like this perhaps:
function [c ,d] = test2(a, b)
% Initialize outputs to null.
c = ;
d = ;
% b is apparently an array because he's using the transpose operator '.
% a must be a scalar since he's comparing it to 1.
% c is the same for both parts of the if so we can pull it out of the if.
% We have no idea what d was supposed to be in case a < 1
% So we'll just assign it to a string.
c = a * b';
if a > 1
d = a + b;
% Assign d to a string or whatever you want.
d = 'a is less than 1';
errorMessage = sprintf('Error in function test2.\n.\n\nError Message:\n%s', ME.message);
Yash on 1 Sep 2012
Edited: Yash on 1 Sep 2012
for any values less then one it will give the following output
Error in ==> test2 at 2 if a>1
??? Output argument "d" (and maybe others) not assigned during call to "D:\MakeYourassignment.com\test2.m>test2".
however change the code to this if you dont want any such error to exist..
now the output will be