What is the easiest way to remove a vector from a matrix?
    15 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
0 Comments
Answers (2)
  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), :) =[]
4 Comments
  TADA
      
 on 14 Sep 2021
				this removes the lines that correspond to the indices in idx
I suggest you read the documentation on indexing
  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, :) = [];
0 Comments
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

