2-D Meshgrid Rotation Matrix Multiplication
古いコメントを表示
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.
採用された回答
その他の回答 (1 件)
Walter Roberson
2017 年 4 月 2 日
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 件のコメント
Sordin
2017 年 4 月 2 日
Walter Roberson
2017 年 4 月 2 日
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
2017 年 4 月 3 日
カテゴリ
ヘルプ センター および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!