Relation of Elements of matrix
3 次查看(过去 30 天)
显示 更早的评论
A = [1 2
2 6
2 3
2 7
3 4
5 4
6 3
4 7]
i have matrix A,
if i select B=2, i want output as 1 2 3 6 7, it shows relatiionship of 2
if i select B=3, i want output as 2 3 4 6, it shows relatiionship of 3
采纳的回答
Walter Roberson
2021-1-29
编辑:Walter Roberson
2021-1-29
A = [1 2
2 6
2 3
2 7
3 4
5 4
6 3
4 7]
B = 2
unique([B; A(A(:,1) == B,2); A(A(:,2) == B,1)]).'
However, the basis for including the number itself is not clear. If B does not occur at all in A, then I would argue it would be more appropriate for the result to be empty than for it to include B itself.
6 个评论
Paul Hoffrichter
2021-1-29
编辑:Paul Hoffrichter
2021-1-29
After adding a note that removing the sort was faster, I then started thinking that the two line solution might actually be faster than the more one-line solution. (Usually, I think of one-line solutions as not only more elegant, but also, usually also faster.)
Yet, the two line solution was 4-5 times faster than the one line solution. Not that it matters much since the time for either one is negligible.
B = 12345;
n = 1e8;
A = randi(n/2000,n,2);
tic
z1 = unique([B; A(A(:,1) == B,2); A(A(:,2) == B,1)]).';
toc
tic
[r, ~] = ind2sub( size(A), find(A==B) );
z2 = unique( A( r ,: ) )';
toc
Elapsed time is 0.665452 seconds.
Elapsed time is 0.154779 seconds.
Walter Roberson
2021-1-29
B = 12345;
n = 5e7;
A = randi(n/2000,n,2);
tic
z1 = unique([B; A(A(:,1) == B,2); A(A(:,2) == B,1)]).';
toc
tic
[r, ~] = ind2sub( size(A), find(A==B) );
z2 = unique( A( r ,: ) )';
toc
tic
z3 = unique(A(any(A == B,2),:)).';
toc
更多回答(1 个)
Paul Hoffrichter
2021-1-29
B = 3;
[r, ~] = ind2sub( size(A), find(A==B) );
z = A(sort(r),:);
zu = unique(z(:))'
2 个评论
Paul Hoffrichter
2021-1-29
B = 2;
[r, ~] = ind2sub( size(A), find(A==B) );
z = unique( A( sort(r) ,: ) )'
Paul Hoffrichter
2021-1-29
Don't need the sort, so this is faster:
[r, ~] = ind2sub( size(A), find(A==B) );
z = unique( A( r ,: ) )'
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!