2

この投稿は、空の括弧 [] を使用する「要素の削除」操作に関するものです。

[] を使用して、セル内の特定の要素を削除しようとしています。以前の投稿で、配列の [] で {} ではなく () を使用することは、セル全体ではなく要素を削除する適切な構文であると述べました。ただし、この構文は機能していないようです (エラー: ()-indexing は、インデックス式の最後に表示する必要があります)。私の元のコードは次のとおりです。これは、() ではなく {} を使用して、inter2 の対応するセルから newinter の各セルに含まれる要素を削除します。

for i=1:11
    inter2{i}(newinter{i}) = [];
end

inter2 は 1X11 配列です。newinter も 1x11 配列です。これらの配列のセル内に含まれる各ベクトルの長さが異なるため、配列と行列を使用しました。

前もって感謝します!

4

3 に答える 3

0

を使用して要素を削除する場合は、交差を使用したソリューションが間違いなく最適な方法です[]が、一般に、あるベクトルから別のベクトルにない要素を取得する最も簡単な方法は、を使用することですsetdiff

for i=1:11
    inter2{i} = setdiff(inter2{i}, newinter{i});
end

それが懸念される場合、これによりパフォーマンスがわずかに向上すると想像できます。

于 2013-08-01T21:36:25.460 に答える
0

現在、私は MATLAB PC の近くにいませんが、次のことを試してください。

for i=1:11
    inter2{i}(1,newinter{i})=[];
end

セル自体ではなくセルの内容を削除しようとしている場合は、逆になっていることに注意してください。{}while はセルの内容にアクセスし()、セル自体を返す{}ため、セルをそのまま保持したい場合に使用する必要があります。ケースの例については、このリンクを参照してください。

于 2013-08-01T16:20:59.450 に答える