我有一個功能,需要可變數量的輸入,例如myfun(x1,x2,x3,...)
。在Matlab中,對於多輸入函數,如何將單個輸入用作多個輸入?
現在,如果我有輸入存儲在結構數組S中,我想要做類似 myfun(S.x1,S.x2,...)
。我該怎麼做呢?
我有一個功能,需要可變數量的輸入,例如myfun(x1,x2,x3,...)
。在Matlab中,對於多輸入函數,如何將單個輸入用作多個輸入?
現在,如果我有輸入存儲在結構數組S中,我想要做類似 myfun(S.x1,S.x2,...)
。我該怎麼做呢?
您可以先使用STRUCT2CELL將您的結構轉換爲單元陣列,然後使用它來生成多個輸入的列表。
S = struct('x1','something','x2','something else');
C = struct2cell(S);
myfun(C{:});
注意,在其中在S
的字段定義的順序是其中輸入被傳遞的順序。要檢查這些字段的順序是否正確,可以在S
上運行fieldnames
,它將返回一個單元格,其中的字段名稱對應於C
中的值。
東西添加到喬納斯的回答:其實你可以省略結構,去正確的單元格,然後將其擴展成一個列表的函數的參數:
c = {125, 3};
nthroot(c{:})