Compare arrays to find common non zero indexes
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Jan
2017-8-4
编辑:Jan
2017-8-4
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)
采纳的回答
Jan
2017-8-4
编辑:Jan
2017-8-5
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!