私は、MATLAB関数myfun(v1,v2,v3,v4,v5,v6)
と30x6行列A
を持っています。関数を呼び出すための方法は、別々の入力引数としてA
の各列を渡すことである:MATLABでは、関数に多くの引数をどのように便利に与えることができますか?
myfun(A(:,1),A(:,2),A(:,3),A(:,4),A(:,5),A(:,6))
だけで明示的に何度A(:,*)
を記述することなく、これを行うには良い方法があるかどうかを疑問に思いますか?
私は、MATLAB関数myfun(v1,v2,v3,v4,v5,v6)
と30x6行列A
を持っています。関数を呼び出すための方法は、別々の入力引数としてA
の各列を渡すことである:MATLABでは、関数に多くの引数をどのように便利に与えることができますか?
myfun(A(:,1),A(:,2),A(:,3),A(:,4),A(:,5),A(:,6))
だけで明示的に何度A(:,*)
を記述することなく、これを行うには良い方法があるかどうかを疑問に思いますか?
は受け入れるようにあなたの関数を書き換え両方の規則:
function [] = myfun(v1,v2,v3,v4,v5,v6)
if nargin==1
v2 = v1(:,2);
v3 = v1(:,3);
v4 = v1(:,4);
v5 = v1(:,5);
v6 = v1(:,6);
v1 = v1(:,1);
end
%# use v1,v2,v3,v4,v5,v6
%# ...
end
は今、あなたは両方のように呼び出すことができます。
myfun(A(:,1),A(:,2),A(:,3),A(:,4),A(:,5),A(:,6))
myfun(A)
通常、正しい数の引数をテストするためにさらに検証を行います...
あなたはまず{:}
構文を使用してcomma-separated listとしてセル配列の内容を渡し、機能NUM2CELLを使用してセル配列のセルにA
の各列を配置することができます:
B = num2cell(A,1);
myfun(B{:});
なぜこのように渡していますか?この関数を書いたのですか、これは何らかの制約ですか? – Marm0t