matrix

12 views (last 30 days)
khalil
khalil on 19 Apr 2012
how I can remove rows from matrix each elements in these rows are equals m=[1 2 3;1 1 1;4 5 8;4 5 8;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;4 5 8;7 8 5; 47 9 5;7 8 5;5 322 5;7 8 55];

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 19 Apr 2012
m=[1 2 3;1 1 1;4 5 8;4 5 8;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;1 1 1;4 5 8;7 8 5; 47 9 5;7 8 5;5 322 5;7 8 55];
variant 1
[a b n] = unique(m,'rows','first');
[id id] = sort(b);
out1 = a(id,:);
variant 2
[a b n] = unique(m,'rows','first');
[id id] = sort(b);
t = accumarray(n,ones(numel(n),1)) == 1;
a2 = a(id,:);
out2 = a2(t(id),:);
  1 Comment
khalil
khalil on 19 Apr 2012
Thank you.
The first variant is good solution for me

Sign in to comment.

More Answers (2)

Geoff
Geoff on 19 Apr 2012
m(row, :) = [];
Where row is the row index, or vector of row indices.

Jan
Jan on 19 Apr 2012
I do not understand the question. What does "each element in the rows are equals" mean? Do you want to remove rows, which have have equal elements only? Then:
m = [1 2 3;1 1 1;4 5 8;4 5 8;1 1 1;1 1 1;1 1 1;1 1 1; ...
1 1 1;1 1 1;1 1 1;1 1 1;4 5 8;7 8 5; 47 9 5; ...
7 8 5;5 322 5;7 8 55];
m = m(any(diff(m, 1, 2), 2), :);

Categories

Find more on Dynamic System Models in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!