# Relation of Elements of matrix

2 views (last 30 days)
ANAND ASP on 29 Jan 2021
Commented: Walter Roberson on 29 Jan 2021
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
KSSV on 29 Jan 2021
What do you mean by relationship of 2? What is B?

Walter Roberson on 29 Jan 2021
Edited: Walter Roberson on 29 Jan 2021
A = [1 2
2 6
2 3
2 7
3 4
5 4
6 3
4 7]
A = 8×2
1 2 2 6 2 3 2 7 3 4 5 4 6 3 4 7
B = 2
B = 2
unique([B; A(A(:,1) == B,2); A(A(:,2) == B,1)]).'
ans = 1×5
1 2 3 6 7
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.
Walter Roberson on 29 Jan 2021
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
Elapsed time is 0.759719 seconds.
tic
[r, ~] = ind2sub( size(A), find(A==B) );
z2 = unique( A( r ,: ) )';
toc
Elapsed time is 0.251981 seconds.
tic
z3 = unique(A(any(A == B,2),:)).';
toc
Elapsed time is 0.306312 seconds.

Paul Hoffrichter on 29 Jan 2021
B = 3;
[r, ~] = ind2sub( size(A), find(A==B) );
z = A(sort(r),:);
zu = unique(z(:))'
##### 2 CommentsShowHide 1 older comment
Paul Hoffrichter on 29 Jan 2021
Don't need the sort, so this is faster:
[r, ~] = ind2sub( size(A), find(A==B) );
z = unique( A( r ,: ) )'

### Categories

Find more on Mathematics and Optimization 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!

Translated by