3 views (last 30 days)

Show older comments

Suppose there is a Loop A which returns a row vector y of the same number of columns such as matrix Q.

I want to remove all the occurrences of the row vectors y from Q, is their a simple way to do it (I am trying to avoid loops).

Here is a loop I wrote:

for i=1:size(Q,1)

s=eq(Q(i,:),y); r=all(s);

if r==1

Q(i,:)=[];

end

end

Chunru
on 11 Sep 2021

Edited: Chunru
on 11 Sep 2021

a = magic(4);

a = [a; a(1, :); a]; % 1st 5th and 6th rows are the same

a

y = a(1, :); % the vector input

idx = all(a == y, 2);

a(idx, :)=[]

% in a line

% a(all(a==y, 2), :) =[]

Chunru
on 15 Sep 2021

@Chad Greene You don't have to replicate y (matlab does auto array expansion).

TADA
on 11 Sep 2021

A = [magic(5); magic(5)];

v = A(1,:);

mask = A==v;

eqRows = all(mask, 2);

A(eqRows, :) = [];

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

Start Hunting!