我需要声明一个具有32个参数的函数,所以放置一个唯一的参数会很方便:一个由32个元素组成的数组。 我没有找到这样做的语法,我试过everythinh就像: 函数x = myfunction(str(32))(等...) 但没有成功。如何用一个数组参数声明一个函数?
3
A
回答
5
与其他语言不同,MATLAB可以接受矩阵作为单个参数;所以你可以只检查输入变量是长度为32的矢量:
function x = myfunction(arg)
if length(arg) ~= 32
error('Must supply 32 arguments!');
end
%# your code here
end
如果它的参数个数可变,检查出varargin
:
function x = myfunction(varargin)
但对于32点的参数,可以考虑使用an input structure :
function x = myfunction(argStruct)
if length(fieldnames(argStruct)) ~= 32
error('not enough arguments!');
end
在结构供应参数,然后传递结构:
>> myArgs = struct();
>> myArgs.arg1 = 5;
>> myArgs.arg2 = 7;
>> %#(etc)
>> x = myfunction(myArgs);
然后在函数中,您可以直接调用argStruct.arg1
等;或者将其解压缩为函数内的32个不同变量。我会提供这些字段的描述性名称,所以您不要在您的函数中将它们称为arg1
等。对于许多输入参数,使用函数的人可能不会记住函数要求他们传递输入的顺序。用一个结构体做它可以让用户传递参数,而不需要考虑这些输入定义的顺序。
3
要添加到@standardrude27的真棒答案,它看起来像你可能误解函数声明如何在Matlab中工作。你写道:
function x=myfunction(str(32))
但是,你不需要在matlab中声明输入的类型。只要给它一个名字,然后使用它。因此,声明的正确语法是:
function x = myfunction(myInput)
相关问题
- 1. 如何声明一个数组数组?
- 2. 如何声明一个函数返回一个数组
- 3. 使用数组参数声明一个python函数并将数组参数传递给函数调用?
- 4. 声明一个函数SML
- 5. 声明一个函数?
- 6. 在另一个函数中使用在一个函数中声明的数组
- 7. 如何声明一个Closure作为函数参数
- 8. 如何将一个接口数组声明为Typescript函数参数?
- 9. 如何在Rails 3中声明一个数组参数?
- 10. 如何全局声明一个数组
- 11. 如何从全局函数声明一个数组?
- 12. 如何声明一个在堆栈上使用单个函数参数的lua_CFunction?
- 13. 如何声明一个函数参数来接受抛出的函数?
- 14. 用FILE声明一个函数原型作为参数
- 15. 声明一个变量与函数返回一个参考
- 16. 如何编写函数声明只有一个数组作为第一个参数或元素的扩散
- 17. 如何声明一个返回函数指针的函数?
- 18. 如何声明一个函数J作为q的函数?
- 19. 如何在OpenCL的内核函数中声明一个函数?
- 20. 声明一个具有类构造函数作为函数参数的函数
- 21. 一次声明一个全局数组
- 22. java声明一个通用数组
- 23. 如何声明一个函数等同于as3中的另一个函数?
- 24. 如何在另一个函数内重新声明一个函数?
- 25. 如何在数组中声明一个静态数组?
- 26. 如何声明一个特定的变量是一个数组?
- 27. 如果我用一个空参数表声明一个函数,然后将参数传递给它呢?
- 28. 声明一个函数来获取byref和byval参数
- 29. 将参数传递给一个声明的函数
- 30. JS函数声明:在参数声明