How to reshape matrix 2 columns by 2 columns
3 次查看(过去 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!