在用matlab编程时,有几次遇到输入的参数过多过长和参数变化的情况,所使用的方法(暂定为方法1),在网上搜索看到方法2,现均将其记录,希望能有所帮助。
方法1:
a.a1 = 1; a.a2 = 2;
function [b] = multiple(a)
a1 = a.a1; a2 = a.a2;
b = a1*a2;
end
方法1采用的是struct变量类型进行参数传输,将所有参数表示进入结构体,解决函数输入参数过多过长等缺点,同时结构体参数对于全局静态变量也很有效。
方法2:
function varargout = multiple(varargin)
if nargin == 2
a1 = varargin{1};
a2 = varargin{2};
varargout{1} = a1*3;
varargout{2} = a2*3;
elseif nargin == 3
a1 = varargin{1};
a2 = varargin{2};
a3 = varargin{3};
varargout{1} = a1*3;
varargout{2} = a2*3;
varargout{3} = a3*3;
end
end
方法2采用元胞数组记录输入输出变量,真正实现输入输出变量可变。需要注意的是 varargin 和varargout,以及统计输入参数个数的函数nargin,统计输出参数个数的nargout