Relation between two vectors elements

Hi all,
suppose I have two vectors:
A = [1 2 3 4 5 6 7 8 9 10];
B = [4 7 8 2 1 10 3 5 9 6];
Ho can I say, the first element in B is the fourth element in A? In other workds, look at each element in B, what is its position/order/index in A? How can I establish a connection between both vectors' elements?
Thanks.

 採用された回答

Torsten
Torsten 2022 年 3 月 30 日

0 投票

Determine the permutation matrix P for which P*A = B:
A = [1 2 3 4 5 6 7 8 9 10].';
B = [4 7 8 2 1 10 3 5 9 6].';
P = bsxfun(@eq, A', B);
isequal(P * A, B)

3 件のコメント

Lama Hamadeh
Lama Hamadeh 2022 年 3 月 30 日
Thank you for your answer.
Jsut to extend further here. What about I want to compare between two matrices row wise. Say that I have the following two matrices:
A = [1 2; 3 1; 4 1; 5 2];
B = [4 1; 5 2; 1 2; 3 1];
How can I produce such a permutation matix of them?
Thanks.
Lama Hamadeh
Lama Hamadeh 2022 年 3 月 30 日
I think I have done it.
Perm =zeros(size(A,1),size(B,1));
for i = 1:size(A,1)
for j = 1:size(B,1)
if A(i,:) == B(j,:)
Perm(i,j) = 1;
else
Perm(i,j) = 0;
end
end
end
Torsten
Torsten 2022 年 3 月 30 日
This code checks whether there are permutation matrices PL and PR such that
PL*A*PR = B,
i.e. whether there are permutations of the rows and columns of A such that you can arrive at B.
A = [1 2; 3 1; 4 1; 5 2];
B = [4 1; 5 2; 1 2; 3 1];
I1 = eye(size(A,1));
[~,a1] = sortrows(sort(A,2));
[~,b1] = sortrows(sort(B,2));
I2 = eye(size(A,2));
[~,a2] = sortrows(sort(A,1).');
[~,b2] = sortrows(sort(B,1).');
PL = I1(a1(b1),:)
PR = I2(:,a2(b2))
isequal(PL*A*PR,B)

サインインしてコメントする。

その他の回答 (1 件)

Geoff Hayes
Geoff Hayes 2022 年 3 月 30 日

0 投票

@Lama Hamadeh - consider using intersect and in particular this example.

カテゴリ

ヘルプ センター および File ExchangeLinear Algebra についてさらに検索

質問済み:

2022 年 3 月 30 日

コメント済み:

2022 年 3 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by