我需要聲明一個具有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函數聲明:在參數聲明