0

Matlab 2013b で codegen を使用して mex ファイルに変換したい test (test.m) という名前の関数があります。ここで、B はゼロ行列 p_z (サイズ 128 * 128) を含む構造体であり、plastset は空の行列 (0*0) です。次のコードを変換するとエラーが発生します: 「行」が指定されていない場合、入力はベクトルでなければなりません。可変サイズの入力の場合、行 'actset = setxor ( actset , plastset );' では、1 番目または 2 番目の次元のいずれかが 1 の定数長でなければなりません。以下のコードで

以下の関数を mex ファイルに正常に作成するためのコードを修正するのを手伝ってください。

function [] = test(B)

p_z = B.p_z;

plastset = B.plastset;

if isempty(B.plastset)
     plastset = zeros(1,0);
end


if isempty(find( p_z > 0, 1 ))
     actset = zeros(1,0);
else
     actset = find( p_z > 0 );
     actset = setxor ( actset , plastset );
end
4

1 に答える 1

1

エラー メッセージから、setxor は呼び出している方法で行列をサポートしていないようです。actset 内のすべての要素を plastset で setxor したい場合は、コロン演算を使って vector にしてみてください。

actset = setxor(actset(:), plastset(:));
于 2014-04-11T13:46:43.083 に答える