2016-06-22 11 views
1

私の問題:varargin構文を使用する関数を書いています。これはhereと説明しています。今私は、この関数に渡すことができる引数のリストを作成する方法に問題がある。設定はこれに匹敵する: は、私はここで、n今は、n個の行列とAの積を決定する行列Aを用いて、任意の多くの行列の積を決定する機能可変数の入力を持つ関数の引数リストを作成する

matrixmult(A, varargin)

があるとコード内にあらかじめ設定されています。それは次のようになります:

n=4; 
A=eye(5); 
B=ones(5); 
matrixmult(A, ?) 

私は何の代わりに書く必要がありますか?このように同じ結果を受け取るために:変数入力は常にどのようにループの一種で作成された引数を渡すためのvararginを使用しない方法についての質問につながるよう

n=4; 
A=eye(5); 
B=ones(5); 
matrixmult(A,B,B,B,B) 

Googleは助けにはなりませんでした。 eval(文字列)を使うために、文字列 '、B'を作成し、それを何回か繰り返すなど、さまざまなことを試みました。 これを複製する必要がある場合は、マークを付けてください。 事前にお手数をおかけしていただきありがとうございます。

答えて

1

すべての入力をセル配列に配置し、{:}の構文をcreate a comma-separated listに使用し、複数の入力として関数に渡すことができます。あなたのケースではそう

、のようなもの:

% Create n copies of B each within it's own cell array element 
inputs = repmat({B}, [1 n]); 

% Pass all of these B matrices to your function 
matrixmult(A, inputs{:}); 
関連する問題