matlab中的置换矩阵

时间:2015-02-08 17:42:27

标签: matlab matrix permutation

我有两个向量v1和v2。是否有任何matlab函数可以找到v1和v2之间的置换T矩阵,以便matlab中的T * v1 = v2?实际上,我知道如何在向量很短时手动找到置换矩阵。我不知道如何在向量'时使用matlab函数找到该矩阵。尺寸很长。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用sort的第二个输出参数来获取以下内容:

function [I, PMat] = permutation_From_To(A,B)
[~,IA] = sort(A);
[~,IB] = sort(B);
I(IB) = IA;
PMat(:,I) = eye(length(A));

您可以通过以下方式使用它:

A = rand(10,1);
B = A(randperm(10));
[I, PMat] = permutation_From_To(A,B);
%// All the following three lines will output the vector `B`.
B 
A(I) 
PMat*A

版本A(I)将比PMat*A快,所以即使您只是要求矩阵版本,我也会将其包含在内。