Matlab 如何声明一个参数为数组的函数?

Matlab 如何声明一个参数为数组的函数?,matlab,Matlab,我需要声明一个有32个参数的函数,所以放置一个唯一的参数很方便:一个32个元素的数组。 我找不到这样做的语法,我已经尝试了所有方法,比如: 函数x=myfunction(str(32))(等) 但是没有成功。与其他语言不同,MATLAB可以接受矩阵作为单个参数;因此,您可以检查输入参数是否是长度为32的向量: function x = myfunction(arg) if length(arg) ~= 32 error('Must supply 32 arguments!

我需要声明一个有32个参数的函数,所以放置一个唯一的参数很方便:一个32个元素的数组。 我找不到这样做的语法,我已经尝试了所有方法,比如: 函数x=myfunction(str(32))(等)
但是没有成功。

与其他语言不同,MATLAB可以接受矩阵作为单个参数;因此,您可以检查输入参数是否是长度为32的向量:

function x = myfunction(arg)
    if length(arg) ~= 32
        error('Must supply 32 arguments!');
    end

    %# your code here
end
如果参数数量可变,请检查:

但对于32个参数,考虑使用:

在结构中提供参数,然后传递结构:

>> myArgs = struct();
>> myArgs.arg1 = 5;
>> myArgs.arg2 = 7;
>> %#(etc)
>> x = myfunction(myArgs);

然后在函数中,您可以直接调用
argStruct.arg1
,等等;或者将其解压为函数中的32个不同变量。我会给出字段的描述性名称,这样您就不会在函数中把它们称为
arg1
,等等。对于这么多的输入参数,使用函数的人可能不会记得函数要求他们将输入传递给的顺序。使用struct可以让用户传入参数,而无需考虑这些输入的定义顺序。

要补充@strictlyrude27令人敬畏的答案,您可能会误解函数声明在Matlab中的工作方式。你写道:

function x=myfunction(str(32))
但是,您不需要在matlab中声明输入的类型。给它起个名字,然后用它。因此,声明的正确语法应该是:

function x = myfunction(myInput)
function x=myfunction(str(32))
function x = myfunction(myInput)