Hello ,
I want to try to spin a matrix, but I can not. I have three 240x320 matrices (x, y, z, which are the cartesian points of a stereo camera scan) and have done 4 scans (front, right, left, back) and I want to rotate the Cartesian arrays with 90 degrees, 180 degrees in the back and 270 left to create a 360 degree view. and the rotation matrix, from what I read, has the size of 3x3 (rotate = [cosd (90) -sind (90) 0; sind (90) cosd (90) 0; 0 0 0 1]). I tried the following:
rotz = [cosd (90) -sind (90) 0; sind (90) cosd (90) 0; 0 0 0 1 ];
for i = 1:240
for j = 1:320
[0 0 x11(i,j)] = rotz.*[0 0 x11(i,j)];
end
end
or :
for i = 1:240
for j = 1:320
x11(i,j) = rotz.*x11(i,j);
end
end
Can anyone tell me how can I do that multiplication? Or if there is another option to rotate the matrix?
Thank you have a good day

6 件のコメント

Jan
Jan 2019 年 6 月 25 日
"three 240x320 matrices (x, y, z, which are the cartesian points..." - this is not clear to me. Which of the x, y and z components are included in the matrices in which dimension?
I would replace cosd(90) by 0 and sind(90) by 1.
rotz = [cosd (90) -sind (90) 0; sind (90) cosd (90) 0; 0 0 0 1 ];
% ^ ^ ^ ^ 4 elements?!
Do you only want to move the elements inside the matrix? Then tranpose and flip will help you.
Bjorn Gustavsson
Bjorn Gustavsson 2019 年 6 月 25 日
編集済み: Bjorn Gustavsson 2019 年 6 月 25 日
Nah, don't constrain the rotation-matrix like that - sooner or later the OP will need to rotate something an arbitrary angle around z - then this version is way easire to generalize instead of a hard-coded variant - if something change to radians from degrees.
Jan
Jan 2019 年 6 月 25 日
@Bjorn: Maybe the OP wants to rotate the matrix elements, not the X and Y values. I'm puzzled by the current descriptions. It does not look like "three 240x320 matrices" are the correct operand for a [3x3] rotation matrix.
Bjorn Gustavsson
Bjorn Gustavsson 2019 年 6 月 25 日
@Jan, fair point, I guessed away from the 3x3 rotation matrix and "decided" that there were 240x320 points with x, y, and z - coordinates stored in 3 separate matrices...
Schiopu Robert
Schiopu Robert 2019 年 6 月 25 日
@Jan :Excuse me, there are 3 matrices with dimensions of 240x320, these matrices are Cartesian coordinates. After scanning, the program gave me a depth matrix of 240x340, and with azimuth and elevation, I found out the Cartesian coordinates, which are these 3 arrays (x, y, z). and the rotation matrix in the last line has 3 elements, just wrong and I added a zero when I copied the code. The rotation matrix is rotate = [cosd (90) -sind (90) 0; sind (90) cosd (90) 0; 0 0 1]; , but it still does not work
Bjorn Gustavsson
Bjorn Gustavsson 2019 年 6 月 25 日
What part of my solution doesn't do it for you?

サインインしてコメントする。

 採用された回答

Bjorn Gustavsson
Bjorn Gustavsson 2019 年 6 月 25 日

1 投票

Maybe something like this for your coordinates:
r_all = [x(:),y(:),z(:)];
r_rotated = (rotz*r_all')';
Xr = x;
Yr = y;
Zr = z;
Xr(:) = r_rotated(:,1);
Yr(:) = r_rotated(:,2);
Zr(:) = r_rotated(:,3);
HTH

1 件のコメント

Schiopu Robert
Schiopu Robert 2019 年 6 月 25 日
Thank you , this is work !

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeModel Import についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by