我有两个向量v1和v2。是否有任何matlab函数可以找到v1和v2之间的置换T矩阵,以便matlab中的T * v1 = v2?实际上,我知道如何在向量很短时手动找到置换矩阵。我不知道如何在向量'时使用matlab函数找到该矩阵。尺寸很长。
感谢。
答案 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
快,所以即使您只是要求矩阵版本,我也会将其包含在内。