Compare arrays to find common non zero indexes
    3 views (last 30 days)
  
       Show older comments
    
Hey I have one 2d and one cell array like this:
A=[14, 1, 0,15;
    1, 2, 4, 0;
    3, 0, 0, 0;
   14, 5, 0, 0;
    0,12, 4, 0]
x={[2,3,4,5];[1,3,4,5];[1,2,4,5]}
I want to find common non-zero elements in A based on X.
For example, firstly x{1,1}=[2,3,4,5] will be compared with A. As it is x{1,1} so all elements of x will be compared with 1st row in A. (first comparison will be row 1 and row 2 in A and common non zero index are 1 & 2 then next row 1 and row 3 and common non-zero index is 1 and similarly row 4 and row 5 will be compared) Then in same way for x{2,1} comparison will be between row 2 and rows 1,3,4 and 5 of A.
Thanks in advance
2 Comments
  Jan
      
      
 on 4 Aug 2017
				
      Edited: Jan
      
      
 on 4 Aug 2017
  
			What have you tried so far? Which problems occurred? What is the wanted output for this example?
I do not understand:
 (first comparison will be row 1 and row 2 in A and common non zero
 index is 2 then next row 1 and row 3 and common non-zero indexes are
 1 and 2 and similarly row 4 and row 5 will be compared)
Accepted Answer
  Jan
      
      
 on 4 Aug 2017
        
      Edited: Jan
      
      
 on 5 Aug 2017
  
      A=[14, 1, 0,15;
    1, 2, 4, 0;
    3, 0, 0, 0;
   14, 5, 0, 0;
    0,12, 4, 0];
x = {[2,3,4,5]; [1,3,4,5]; [1,2,4,5]};
result = cell(size(x));
for k = 1:numel(x)
  Ak = A(k, :);     % Specified row
  xk = x{k};
  D  = cell(1, numel(xk));
  for r = 1:numel(xk)
     D{r} = find(Ak & A(xk(r), :));   % Or: Ak .* A(xk(r), :)
  end
  result{ix} = D;
end
UNTESTED
3 Comments
More Answers (0)
See Also
Categories
				Find more on Logical 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!