2

Aと呼ばれる 163x2 の行列と、 delindex と呼ばれる15x1のベクトルがあります。ここで、最初の行の値として delindex に格納されている数値を含むすべての行を A から削除したいと考えています。

短い例:

A =

           1       29292
           2       44652
           3       56569
           4       68909
           5       81053
           6       93343
         101      105585
         102      118870
         103      132163
           7      144257
         104      156616
           8      205344
           9      216865
         105      228979
         106      229307
         107      240849
         108      253306

そして私のdelindex =

4
101
7
105

(そして、将来の可能性について: 他の行、この例では 2 番目の行に対して同じことを行うにはどうすればよいですか?)

removerows と any() 関数を調べましたが、それらを機能させることができません。私はmatlabとプログラミングにまったく慣れていないので、これに関するドキュメントを見る場所も役立つかもしれません!

前もって感謝します!

4

1 に答える 1

2

使用ismember(@Prashantの提案):

ia = ismember(A(:,1), delindex);

またはintersect:

[~,ia,~] = intersect(A(:,1), delindex);

削除する必要がある行を見つける。次に行を削除します。

A(ia,:) = []

ノート

ismemberは、論理インデックスを返します。一方、およびはインデックスです。[C,ia,ib] =intersect(A,B)iaib

どちらも索引付けに使用できます。詳細については、Matrix Indexing in MATLAB を参照してください。

于 2013-06-11T14:58:16.493 に答える