Vectorized Solution to Rotate Multiple Points each at a Different Angle
古いコメントを表示
I want to rotate a matrix of points, i.e. column vectors. However, I want to rotate each vector in the matrix by a different angle. For example:
pointMatrix = [v1,v2,v3,v4]; %vi is a column vector
rotateAngles = [10,20,30,40]; %degrees
Say I want to rotate these points around the z-axis. Therefore, for one point I could do something like the following:
Rz = [[cos(rotateAngles(1)) -sin(rotateAngles(1)) 0];...
[sin(rotateAngles(1)) cos(rotateAngles(1)) 0];...
[ 0 0 1]];
v1Rotated = Rz*v1;
Is there a non-loop way to rotate all the vectors in my pointMatrix by each one's unique rotation angle? Something like this...
allRotatedPoints = superRotationMatrix*pointMatrix;
where the superRotationMatrix "magically" rotates each column by the corresponding angle.
Thanks!
採用された回答
その他の回答 (1 件)
You can use MTIMESX on the file exchange
If your superRotationMatrix is 3x3xN and you reshape your pointMatrix to be 3x1xN, then
mtimesx(superRotationMatrix,pointMatrix)
will give you the rotated vectors in a 3x1xN output.
カテゴリ
ヘルプ センター および File Exchange で Resizing and Reshaping Matrices についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
