how to use nargin function to take variable input arguments and return sum of those arguments
3 views (last 30 days)
Show older comments
I am not sure how to use the nargin function. I wanted to take a variable number of input arguments and return a sum of those arguments. I am stuck. I have this code so far
function [ output_args ] = addmany() %This function will take zero or more numbers as a variable number of input %arguments and returns the sum of its input arguments. n=nargin; %number of input arguments sum
Not sure how to get a sum of the variable input arguments
4 Comments
Accepted Answer
Cedric
on 26 Oct 2013
Edited: Cedric
on 26 Oct 2013
Well, if you had a function
function x = doSomething(a, b, c, d)
...
end
nargin would tell you how many input arguments were present at the call, which would allow you e.g. to define default values for c and d if nargin were equal to 2. Now as you can see, this function has only 4 named input parameters, so this approach is not that well suited for a function which should accept any number of arguments.. what if a user calls your function with 500 arguments, are you going to define 500 named parameters just to be sure?
What we usually do is to use varargin, as follows
function x = doSomething(varargin)
...
end
In that case, varargin is a cell array inside the function, which contains all the arguments from the call.
Now as it's a homework, I cannot write the full code for you, but this hints sets you on a better track already. The next step should be to understand how to deal with cell arrays so you can compute a sum.
1 Comment
Cedric
on 27 Oct 2013
Edited: Cedric
on 27 Oct 2013
As Matt is pointing out, concatenating varargin developed as a Comma Separated List is probably the way we would get the content of varargin. If this looks too complicated to you, you could use CELL2MAT.. execute the following in the command window to understand how:
doc cell2mat
More Answers (1)
Matt J
on 26 Oct 2013
Edited: Matt J
on 26 Oct 2013
it is a statement of homework but there is no specifics as to what commands are able to be used
If there are no restrictions, the better solution would be not to use separate arguments at all. Just put all arguments in a vector x and do sum(x).
function y = addmany(x)
y=sum(x);
end
>> y=addmany([1 2 3 4])
y =
10
2 Comments
Matt J
on 27 Oct 2013
Edited: Matt J
on 27 Oct 2013
Doesnt addmany(x) only add one of the inputs.
Yes, but it's not clear why the summands have to be passed as separate input arguments rather than as elements of one single vector. Was that a requirement of the homework assignment?
or is there something I can do to take any variable number of inputs and find the sum of them
Yes, there is a way, and Cedric gave you strong hints. Here is another small one
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!