1

私はグーグルで検索しましたが、これは一般的なニーズだと思いますが、何も見つかりませんでした。
Matlabでこの関数を使用して、オブジェクトをセルに挿入します。

function ce = insertInCell(ce,toInsert,idexx)
    ce = [ce(1:idexx-1,1); cellToInsert; ce(idexx:end,1);];
end 

この関数は次のように機能すると思います。1番目:ce(
1:idexx-1,1)をコピーして新しいセルを作成します。2
番目:この新しいセルにcellToInsertを追加します。3番目:ce(idexx:end、1);をコピーして追加します
新しいセルに

そして私はこれを行うためのより効率的な方法があるかどうか疑問に思いましたか?要素のインデックスを更新するだけの関数を意味します(または、間違っていて、この関数は効率的ですか?)

ありがとう。

4

1 に答える 1

1

MATLAB はポインターを公開しないため、その目的で MEX ファイルを作成しない限り、単にインデックス (ポインター) を更新することはできません。

コードにバグがあります: コードでは variable を参照しますcellToInsertが、関数定義では しかありませんtoInsert

コードは垂直セル配列に対してのみ機能します。水平 cell 配列または n 次元 cell 配列では機能しません。垂直セル配列の場合、toInsert-> cellToInsertfix で動作します。

バグ修正版:

function ce = insertInCell(ce,cellToInsert,idexx)
    ce = [ce(1:idexx-1); cellToInsert; ce(idexx:end) ];
end
于 2012-12-22T16:11:44.850 に答える