我需要声明一个有32个参数的函数,所以放一个唯一的参数会很方便:一个包含32个元素的数组.我没有找到这样做的语法,我已经尝试过各种各样的方法:function x = myfunction(str(32))(etc ...)但是没有成功.
与其他语言不同,MATLAB可以接受矩阵作为单个参数; 所以你可以检查输入参数是长度为32的向量:
function x = myfunction(arg)
if length(arg) ~= 32
error('Must supply 32 arguments!');
end
%# your code here
end
Run Code Online (Sandbox Code Playgroud)
如果它是可变数量的参数,请查看varargin:
function x = myfunction(varargin)
Run Code Online (Sandbox Code Playgroud)
但是对于32个参数,请考虑使用输入结构:
function x = myfunction(argStruct)
if length(fieldnames(argStruct)) ~= 32
error('not enough arguments!');
end
Run Code Online (Sandbox Code Playgroud)
在结构中提供参数,然后传递结构:
>> myArgs = struct();
>> myArgs.arg1 = 5;
>> myArgs.arg2 = 7;
>> %#(etc)
>> x = myfunction(myArgs);
Run Code Online (Sandbox Code Playgroud)
然后在函数中,您可以argStruct.arg1直接调用等; 或者将其解压缩到函数内的32个不同变量中.我会给字段描述性的名称,所以你不要arg1在函数中引用它们等.对于那么多输入参数,使用该函数的人可能不会记住函数要求它们传递输入的顺序.使用struct进行操作可以让用户传入参数,而无需考虑这些输入的定义顺序.
| 归档时间: |
|
| 查看次数: |
7116 次 |
| 最近记录: |