Delete multiple rows from array
12 ビュー (過去 30 日間)
古いコメントを表示
I need to delete multiple rows from an array. I know I cannot use a loop because the size of the array will change.
Does anyone have any suggestions on how to accomplish this?
UPDATED: For example, if I have an array such as:
1 9 0
2 1 2
5 8 3
7 1 0
Depending on if the 3rd column is a 0 (I used num2cell, so I'm not sure what type that makes each item in the cells), then I want to delete the whole row. So in the above example,
1 9 0
7 1 0
Would both be deleted, and the array would then only be a 2x3 array.
Thanks in advance! Let me know if I need to add more details. -Matt
2 件のコメント
the cyclist
2012 年 2 月 27 日
Could you give more detail on what your array looks like (or, ideally, a small example)? Is "array" really a cell array, as the comment suggests? If so, then it seems that v1,v2 and v3 are also cell arrays. If that's the case, then what's inside the cells?
Sean de Wolski
2012 年 2 月 27 日
might want to look at ismember() to build up your index2delete vector
採用された回答
per isakson
2012 年 2 月 27 日
Two possible approaches are:
array( v3==0, : ) = [];
and
for ii = size( array, 1 ) : -1 : 1
if v3{ii}==0
array( ii, : ) = [];
end
end
Loop from bottom up seems to be the simplest way, if the array is not too big.
========================= UPDATE
Yes, it is possible to use v3. However, it "smells". My point was to loop from bottom up, which I thought was appropriate to point out since you excluded looping.
The code below does what I think you are asking for
num = [
1 9 0
2 1 2
5 8 3
7 1 0 ];
cac = num2cell( num );
ca1 = cellfun( @(x) num2str(x), cac, 'uni', false );
iscellstr( ca1 )
ca2 = ca1;
for ii = size( ca1, 1 ) : -1 : 1
if strcmp( ca1(ii,3), '0' )
ca1( ii, : ) = [];
end
end
ca2( strcmp( ca2(:,3), '0' ), : ) = [];
strcmp( ca1, ca2 )
all( strcmp( ca1, ca2 ) )
all( all( strcmp( ca1, ca2 ) ) )
4 件のコメント
その他の回答 (1 件)
prasoon purwar
2012 年 2 月 27 日
if isequal(v3,0)==1
array(n,:)=[]
end % array is your matrix
% n is the row , which is to be removed
参考
カテゴリ
Help Center および File Exchange で Data Type Identification についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!