2-D Meshgrid Rotation Matrix Multiplication
Afficher commentaires plus anciens
I am trying to rotate the coordinates of a 182x182 mesh grid by means of multiplication with the rotation matrix:

The following code works fine:
[x0,y0] = meshgrid(x,x);
for i = 1:length(theta)
X = x0.*cosd(-i) + -y0.*sind(-i);
Y = x0.*sind(-i) + y0.*cosd(-i);
end
However, I get errors when I try to perform this using the following matrix multiplication:

Here is my code:
[x0,y0] = meshgrid(x,x);
for i = 1:length(theta)
R = [cosd(-i) -sind(-i); sind(-i) cosd(-i)];
[X,Y]'=R.*[x0;y0];
end
And this is the error:
[X,Y]=R.*[x0;y0];
The expression to the left of the equals sign is not a valid target for an assignment.
And when I remove the transpose operator, it says:
Error using .*
Too many output arguments.
What is wrong here? How can I perform this operation using matrix multiplication?
Any guidance is greatly appreciated.
Réponse acceptée
Plus de réponses (1)
Walter Roberson
le 2 Avr 2017
You have
[X,Y]'=R.*[x0;y0];
You need to replace this with something like
XY = R * [x0;y0];
X = XY(1);
Y = XY(2);
3 commentaires
Sordin
le 2 Avr 2017
Walter Roberson
le 2 Avr 2017
If your R is truly 2 x 2 and your x0 and y0 are scalars, then R * [x0; y0] is correct. Perhaps your R is not 2 x 2 or perhaps your x0 or y0 are not scalars.
Sordin
le 3 Avr 2017
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!