2016-04-28 19 views
1

私は、関数はsq_dist()と言いましょう。この関数は、sq_dist(a,b)またはsq_dist(a)のように呼び出すことができます。この関数は動作が遅いので、より速く動作することを望むMexバージョンを作成しようとしています。私はそうするためにMatlab Coder GUIを使用しています。 (入力画面の定義で)入力タイプを定義するために、私は入力を自動的に決定するためにsq_dist(a,b)とsq_dist(a)を呼び出す関数を使用します。これは私にエラー:Error determining type for input sq_dist:b. Index exceeds matrix dimensionsを与えます。 sq_distが、私はコーダにその入力を定義する方法を確認していないさまざまな方法で呼び出すことができるので、Matlab Coderでさまざまな入力数を持つ関数の入力タイプを定義する方法は?

n = 50; 
dim = 50; 
a = rand(n, dim); 
b = rand(n, dim); 

u = sq_dist(a, b); 
v = sq_dist(a); 

ので:ここに私の関数です。

私は手動でMEXファイルがコンパイルされているが、私はランタイムエラーを取得abためdouble :inf x :infへの入力を設定した場合:Function 'sq_dist' called with wrong number of arguments: expected 2, received 1.要するに

答えて

1

、あなたは(現在のバージョン2016aで)あなたがやりたいことはできませんが最上位関数の場合、これは定義された数の入出力を持っていなければなりません。関数定義で 'varargin'パラメータを使用しても、MATLAB Coderは提供する引数の例に基づいて固定数の入力を持つ関数を生成します。

可変数の入力引数を持つ特定の関数がある場合は、外部にラッパー関数(固定数の入力引数)を置き、ラッパーを最上位関数にすることができます。

ルール: http://uk.mathworks.com/help/simulink/ug/rules-for-using-variable-length-argument-lists-for-code-generation.html

関連する問題