Rearranging a 512x64 matrix into a 32x1024 matrix

조회 수: 2 (최근 30일)
Shanice Kelly
Shanice Kelly 2021년 1월 12일
편집: Bruno Luong 2021년 1월 13일
I have a 512x64 matrix imported from a excel file. I need to turn it into a 32 x1024 matrix by keeping row 1 column 1 and row 1 column 2 elements in their position and moving all other columns in row 1, and also moving the elements of the other 511 rows.
so row 1 column 3 moves to row 2 column 1
row 1 column 4 moves to row 2 column 2
row 1 column 5 moves to row 3 column 1
row 1 cloumn 6 moves to row 3 column 2
etc... so row 1 transforrms from 1x64 to 32x2
Then move to rearranging row 2
row 2 column 1 moves to row 1 column 3
row 2 column 2 moves to row 1 column 4
I would like to do this for all 512 row until I have a 32 x1024 matrix. I really hope I explained that well enough. I really do not want to have to do this manually in excel so thank you in advance for any help.

채택된 답변

Bruno Luong
Bruno Luong 2021년 1월 13일
편집: Bruno Luong 2021년 1월 13일
% Assuming A is your input matrix of size 512 x 64
% such as
% A=reshape(1:512*64,64,512)';
B = reshape(permute(reshape(A,[512 2 32]),[3 2 1]),[32 1024]);

추가 답변 (1개)

Matt J
Matt J 2021년 1월 12일
편집: Matt J 2021년 1월 12일
  댓글 수: 2
Shanice Kelly
Shanice Kelly 2021년 1월 12일
Thank you for answering. I've tried reshape, unfortunately the order the values are placed in the new matrix seem to be arbitrary. I need values to be placed in a specific order or the rest of my processing will be incorrect.
Matt J
Matt J 2021년 1월 13일
편집: Matt J 2021년 1월 13일
The order is not arbitrary. It extracts data from the initial matrix column-by-bolumn and fills the new matrix column-by-column, e.g.,
A = (1:8).'
A = 8×1
1 2 3 4 5 6 7 8
B = reshape(A,[2,4])
B = 2×4
1 3 5 7 2 4 6 8

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Data Import from MATLAB에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by