3

Matlab コーダーを使用して .m ファイルから mex コード ファイルを生成しようとしています。そのコードは

function [result,x]=tesrank(A,x)

result = [];
n = x;
for col= 1:n
   result = [result, sum(A==col, 2)];
end

固定サイズの場合、次を使用して取得できます

codegen tesrank -args {zeros(2,3), zeros(1)}
% Here size(A)=2x3 and size(x)=1x1

A と x のサイズを制限せずにそれを行うにはどうすればよいですか?

4

3 に答える 3

0

ビルドの場合、関数coder.typeofはここであなたの友達です。無制限の次元を許可する変数を使用することで、必要なことを行うには、次のように入力引数を宣言します。

codegen tesrank -args {coder.typeof(0, [Inf, Inf]), coder.typeof(0, [1, Inf])}

私の例では、 A は 2 次元で完全に制限されておらず (サイズ配列の長さを typeof に増やすだけで、2 つ以上の次元を持つことができます)、x は最初の次元で正確に 1 のサイズに制限されていますが、2 番目の次元では制限されていません。寸法。あなたのコードを見ると、 x を無制限にしたくないかもしれませんが、もしそうなら、それがあなたのやり方です。

探索できる coder.typeof の機能は他にもあります。

于 2015-04-14T03:21:49.260 に答える
-1

Mathworks のドキュメントの p7-15 および p25-24 によると、できません。

于 2013-12-02T14:34:13.607 に答える