butools.reptrans.SimilarityMatrixForVectors¶
-
butools.reptrans.
SimilarityMatrixForVectors
()¶ Matlab: B = SimilarityMatrixForVectors(vecA, vecB)
Mathematica: B = SimilarityMatrixForVectors[vecA, vecB]
Python/Numpy: B = SimilarityMatrixForVectors(vecA, vecB)
Returns the similarity transformation matrix that converts a given column vector to an other column vector. It works even with zero entries.
Parameters: vecA : column vector, shape(M,1)
The original column vector
vecB : column vector, shape(M,1)
The target column vector
Returns: B : matrix, shape(M,M)
The matrix by which \(B\cdot vecA = vecB\) holds
Examples
For Matlab:
>>> vecA = [0.0; 0.3; -1.5; 0.0]; >>> vecB = [1.0; 0.2; 0.0; 1.0]; >>> B = SimilarityMatrixForVectors(vecA, vecB); >>> disp(B); 0 3.3333 0 0 0.66667 0.66667 0 0 0 0 0 0 -0.83333 -0.83333 -0.83333 -0.83333 >>> err = norm(B*vecA-vecB); >>> disp(err); 0
For Mathematica:
>>> vecA = {{0.0},{0.3},{-1.5},{0.0}}; >>> vecB = {{1.0},{0.2},{0.0},{1.0}}; >>> B = SimilarityMatrixForVectors[vecA, vecB]; >>> Print[B]; {{0., 3.3333333333333335, 0., 0.}, {0.6666666666666667, 0.6666666666666667, 0., 0.}, {0., 0., 0., 0.}, {-0.8333333333333334, -0.8333333333333334, -0.8333333333333334, -0.8333333333333334}} >>> err = Norm[B.vecA-vecB]; >>> Print[err]; 0.
For Python/Numpy:
>>> vecA = ml.matrix([[0.0],[0.3],[-1.5],[0.0]]) >>> vecB = ml.matrix([[1.0],[0.2],[0.0],[1.0]]) >>> B = SimilarityMatrixForVectors(vecA, vecB) >>> print(B) [[ 0. 3.33333 0. 0. ] [ 0.66667 0.66667 0. 0. ] [ 0. 0. 0. 0. ] [-0.83333 -0.83333 -0.83333 -0.83333]] >>> err = la.norm(B*vecA-vecB) >>> print(err) 0.0