varargin
272 次查看(过去 30 天)
显示 更早的评论
what is varargin used for ?and how to use it? and can I change it to an ordinary input variable?
0 个评论
采纳的回答
Walter Roberson
2012-2-14
There are situations in which it is not possible to use any fixed number of arguments, so conversion depends upon what your code does.
0 个评论
更多回答(2 个)
Matt Tearle
2012-2-14
It is used for situations where you want to allow any number of input arguments (so you can't list them). A common reason for that is optional settings -- in MATLAB this is often done with property name/property value pairs. For example, think of how you can pass extra options to plot:
plot(x,y) % plain
plot(x,y,'LineWidth',4)
plot(x,y,'Marker','o','LineWidth',2)
plot(x,y,'Marker','o','LineWidth',2,'MarkerFaceColor','r')
etc. Here you don't want to force the user to input all the possible optional parameters in a specific order, so instead you allow them to specify 'MagicPropertyName' takes the value PropertyValue (eg 'LineWidth' takes the value 2).
To write a function that can do this, you'd make a function declaration like
function plot(x,y,varargin)
Then inside this function, x takes the value of the first input, y takes the value of the second, and all the rest go into cells of the cell array varargin. So, in the last example, varargin would be a 1-by-6 cell array; varargin{1} would be the string 'Marker', varargin{4} would be the number 2, etc.
So obviously there's a bunch of programming you have to do as the developer to parse the elements of varargin, and make your code behave accordingly.
I don't really understand the last question. Could you elaborate?
(Note: the actual plot function is actually even more flexible than this -- the above function declaration line is for illustration only.)
3 个评论
Walter Roberson
2012-2-14
You cannot pass adaptfilt.lms objects around in Simulink . No efforts along the line of calling lms.m directly are going to work.
Benjamin Schwabe
2012-2-14
varargin is used when the number of input parameter might change. Basically, it puts all input arguments into a cell array. The number of input parameters is given by
nargin.
You can access any of the input values inside the function by
varargin{ind}
where ind is the index number of your argument.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!