How to reshape matrix 2 columns by 2 columns
조회 수: 1 (최근 30일)
이전 댓글 표시
for example, an array like this:
1 0 2 0 2 3
5 4 4 0 1 4
4 2 2 4 2 2
1 1 0 4 3 1
How to reshape it into an array like this:
1 0
5 4
4 2
1 1
2 0
4 0
2 4
0 4
2 3
1 4
2 2
3 1
댓글 수: 0
채택된 답변
Sriram Tadavarty
2020년 7월 30일
Hi Ren,
Use individual columns and append them. For the sample code you provided, it can be done as below:
a = [1 0 2 0 2 3;
5 4 4 0 1 4;
4 2 2 4 2 2;
1 1 0 4 3 1];
a1 = a(:,1:2:end); % Select the odd numbered columns
a2 = a(:,2:2:end); % Select the even numbered columns
[a1(:) a2(:)] % Append them
Hope this helps.
Regards,
Sriram
댓글 수: 4
Sriram Tadavarty
2020년 7월 30일
Hi Madhan,
I wasn't aware that there was another answer provided by the time i answered it. Looking at your answer now, yes, both are equivalent. Mine has some additional comments.
If i knew that this is already answered, i wouldn't have answered it at all. I think we both looked at the same time, but my answer publish went late by couple of mins.
Sorry for any trouble here. I didn't do anything intentional. I am even ok, if you wanted yours to be an accepted answer, as you mentioned early enough. My answer has just some additional comments.
Thanking you.
Regards,
Sriram
madhan ravi
2020년 7월 30일
No problem Sriram ;). By the way I think concatenate could be used instead of append I believe. Append is something which is used for adding something at the end of already existing variable/array.
추가 답변 (3개)
Walter Roberson
2020년 7월 30일
cell2mat(mat2cell(YourArray, size(YourArray,1), 2*ones(1,size(YourArray,2)/2)).')
madhan ravi
2020년 7월 30일
First = matrix(:, 1:2:end);
Second = matrix(:, 2:2:end);
Wanted = [First(:), Second(:)]
Bruno Luong
2020년 8월 2일
You want a reshape? Here is reshape method:
B = reshape(permute(reshape(A,size(A,1),2,[]),[1 3 2]),[],2)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!