how to use nargin function to take variable input arguments and return sum of those arguments
8 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Cedric
2013-10-26
编辑:Cedric
2013-10-26
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 个评论
Cedric
2013-10-27
编辑:Cedric
2013-10-27
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
更多回答(1 个)
Matt J
2013-10-26
编辑:Matt J
2013-10-26
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 个评论
Matt J
2013-10-27
编辑:Matt J
2013-10-27
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!