How to remove some certain rows in Matlab?

3 ビュー (過去 30 日間)
Moe
Moe 2016 年 2 月 22 日
回答済み: Stephen23 2016 年 2 月 22 日
Matrix A is as follows:
A = [45,1,1,1,2;74,1,2,3,1;75,1,1,3,1;73,1,1,1,1;53,1,1,3,2;98,1,1,1,1];
I want to find those rows in matrix A that only has array "1" and remove them from matrix A (produce new matrix C without those rows) and store them in the matrix B.
B = [45,1,1,1,2;74,1,2,3,1;75,1,1,3,1;53,1,1,3,2];
C = [73,1,1,1,1;98,1,1,1,1]
  2 件のコメント
jgg
jgg 2016 年 2 月 22 日
Do you mean columns? Because no row in A has only ones?
Moe
Moe 2016 年 2 月 22 日
jgg, column 2 to column 5. Remove the row if there is only array "1" in for all specified columns in on a row.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2016 年 2 月 22 日
Simple logical operations are all that is required:
>> idx = all(1==A(:,2:end),2);
>> B = A(~idx,:)
B =
45 1 1 1 2
74 1 2 3 1
75 1 1 3 1
53 1 1 3 2
>> C = A(idx,:)
C =
73 1 1 1 1
98 1 1 1 1

その他の回答 (1 件)

jgg
jgg 2016 年 2 月 22 日
編集済み: jgg 2016 年 2 月 22 日
Ah, I think I understand: the first column are IDs or something. This should work, using the ismember function with the rows option:
data = A(:,2:end);
ind = ismember(data,ones(1,size(data,2)),'rows');
C = A(ind,:);
B = A(~ind,:);

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by