Covariance Matrix Rotation
Show older comments
Hi, I have a matrix 3 by 3 and I want to rotate it with theta and phi angles (result of spherical coordinates), counterclockwise. I have the following function;
function [NewMatrix] = SphericalRotation(Matrix, theta, phi, ScaleRatio)
M1 = [cos(theta) -sin(theta) 0; sin(theta) cos(theta) 0; 0 0 1];
M2 = [1 0 0; 0 cos(phi) -sin(phi); 0 sin(phi) cos(phi)];
NewMatrix = ScaleRatio^0 * M2 * M1 * Matrix * M1' * M2';
end
When;
Matrix = [4 0 0; 0 4 0; 0 0 4],
theta = 0.78,
phi=0.61,
scaleRatio= 1.2 (Not important, results 1 always right now),
I get
NewMatrix=[4 0 0; 0 4 0; 0 0 4]
I don't think this is correct, I should get something different, it is not rotated at all. I believe I am missing sth. very basic. Any help greatly appreciated. Thanks
3 Comments
bym
on 14 May 2012
why are you multiplying by the rotation matrices twice?
M2*M1*M1'*M2'
ans =
1 0 0
0 1 0
0 0 1
Umit
on 14 May 2012
Jim
on 2 Apr 2014
Your test matrix Matrix represents a spherical probability distribution, i.e., the principal values are all identical. There's no way to orient a sphere, which is why your function returns an unaltered output. Try setting Matrix = [10 0 0; 0 3 0; 0 0 1] and you'll see a difference in the output.
Answers (0)
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!