0

MATLAB のコーダー ツールキットを使用して、いくつかのコードを MEX しようとしています。コードには当初、現時点ではコーダーによって処理されないセル配列が含まれていたため、それを補うために構造体を使用することにしました。

私の問題は、構造体のサイズが固定されていないことであり、ここに問題があります。私が本質的に持っているのはこれです:

Temp= struct('a',"some variable");
for i = 2:x
    Temp(j).('a') = Temp(i-1).('a')*Temp(1).('a');
end

MATLAB のコマンド ウィンドウでは、これは完全に許容されますが、MEX ファイルをビルドしようとすると、次のエラーがスローされます。

インデックス式が範囲外です。要素 2 にアクセスしようとしました。有効な範囲は 1 ~ 1 です。

これを修正する方法はありますか、またはコーダーが許可する構造のような「セル配列」に対する別の解決策はありますか?

4

1 に答える 1

2

使用できますrepmat

MyStruct = repmat(Temp,1,N);

ここNで、 は定数です (つまり、データに依存せず、ハードコードされています)。
その後、ご希望であれば、

for i=2:N
    MyStruct(i).a = MyStruct(i-1).a*MyStruct(1).a;
end

必要ありませんMyStruct(i).('a')

于 2014-09-18T20:32:49.420 に答える