私は、可変数の入力、例えばmyfun(x1,x2,x3,...)
をとる関数を持っています。Matlabでは、複数入力関数の場合、1つの入力を複数の入力として使用する方法はありますか?
入力が構造体配列Sに格納されている場合は、 myfun(S.x1,S.x2,...)
のようにしたいと思います。これはどうすればいいですか?
私は、可変数の入力、例えばmyfun(x1,x2,x3,...)
をとる関数を持っています。Matlabでは、複数入力関数の場合、1つの入力を複数の入力として使用する方法はありますか?
入力が構造体配列Sに格納されている場合は、 myfun(S.x1,S.x2,...)
のようにしたいと思います。これはどうすればいいですか?
まず、構造体をSTRUCT2CELLを使用してセル配列に変換し、それを使用して複数の入力のリストを生成することができます。
S = struct('x1','something','x2','something else');
C = struct2cell(S);
myfun(C{:});
S
のフィールドが定義される順序は、入力が渡される順序であることに留意されたいです。フィールドが正しい順序であることを確認するにはfieldnames
をS
に実行すると、値に対応するフィールド名がC
のセルが返されます。
何かがヨナスの答えに追加する:実際にあなたが構造体を省略して、関数の引数のためのリストに展開されているセルのために右に行くことができます。
c = {125, 3};
nthroot(c{:})