Compare arrays to find common non zero indexes

1 view (last 30 days)
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
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)
lucksBi
lucksBi on 4 Aug 2017
I have edited my question.. Sorry for confusion

Sign in to comment.

Accepted Answer

Jan
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
Jan
Jan on 5 Aug 2017
I've edited the answer. Does it create the wanted output?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!