Matlab,如何实现输入参数及输出参数的个数可变

如题所述

使用变量varargin和变量varargout。varargin和varargout必须使用小写形式。例如,

function [m,n] = testhv3(varargin)

将输入的变量数读取到函数testhv3中,而

function [varargout] = testhv4(m, n, p)

则通过函数testhv4返回输出的变量数。若函数testhv有一个固定的输入变量x,后跟输入变量的可变数目,则调用

function [m, n] = testhv3(x, varargin)

函数时,会导致varargin由用户提供的第二个输入变量开始运行(第二个输入变量为varargin这个单元数组第一个元素)。varargout的情形与此类似。一个函数的输入变量和输出变量的个数是可变的。

当varargin用做一个函数的输入变量时,MATLAB会将其置入一个单元数组中,该数组接受由用户输入的变量数。varargout类似,函数返回的是一个单元数组。

例:

function varargout = Test(a, b, varargin)
    if (nargin == 2)
        fprintf('共有%d个输入参数.\n',nargin);
        varargout{1} = a;
        varargout{2} = b;
    elseif (nargin == 3)
        fprintf('共有%d个输入参数.\n',nargin);
        varargout{1} = a; 
        varargout{2} = b; 
        varargout{3} = varargin{1};
    end
end

当你在matlab命令行键入

[x,y,z] = Test(1, 2, 3)

返回

共有3个输入参数.
x = 1
y = 2
z =  3

参考文献

[1]Rafael C.Gonzalez,Richard E.Woods,Steven L.Eddins.数字图像处理(MATLAB版)[M].电子工业出版社:北京,2005.9:51.

[2]森林里的树叶子.Matlab,如何实现输入参数及输出参数的个数可变?[EB/OL].http://blog.sina.com.cn/s/blog_e68017690102v68u.html,2014-11-08.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-09
方法一:很简单,用向量即可。
你的程序:
function y = test(x)
len = length(x);
for i =1:len
y(i)=x(i)+1;

end
end
这样 返回的值,就是x中所有元素+1之后的值。
方法二: 用面向对象
同样是上述函数
function y = test(x)
% 这里y和x都是对象,其下包括多个属性。比如可以直接如下调用

y.num=x.num*2;
y.length=x.length^2;
end
只是这样使用的时候,要注意x在附值时,被使用到的属性必须要有。
例如:
x.num=1;
x.length=5;
y=myfun(x);
可以自己跑一下试试。本回答被网友采纳
相似回答