How can I rotate a part of a matrix

7 ビュー (過去 30 日間)
DM
DM 2020 年 9 月 24 日
コメント済み: Ameer Hamza 2020 年 9 月 24 日
Hi there,
I have a 4D images (dimensions [156 192 26 42]). I would like to rotate only the last 20 volumes of my 4D matrix and keep the first as it is.
I tried the following:
rotated_matrix=original_matrix;
rotated_matrix = rot90(original_matrix(:,:,:,23:42));
The rotated_matrix has been rotated but it has dimensions [192 156 26 20]. Basically it contains the volumes that have been rotated.
How can I rotate only the volume in the last 20 places and keep the first 22 as they are?

回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 9 月 24 日
Try something like this
rotated_matrix = original_matrix(:,:,:,[1:20 42:-1:21]);
  6 件のコメント
DM
DM 2020 年 9 月 24 日
I might have put my question wrong. I didn't want to reverse the order of the last 20 elements.
I wanted to replace the last 20 elements in the 4th dimension of the original matrix with the 20 elements of the rotated_matrix.
Origina matrix has dimensions [156 192 26 42] where the rotated matrix has dimensions [156 192 26 20].
What I wanted to do is to replace the last 20 elemets of the original matrix with the 20 elemets of the rotated matrix.
Ameer Hamza
Ameer Hamza 2020 年 9 月 24 日
Ok. I get it know. Following will work for this case
original_matrix(:,:,:,end-19:end) = rotated_matrix

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

カテゴリ

Help Center および File ExchangeGeometric Transformation and Image Registration についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by