From vector to matrix reshape every ith rows for each column
이전 댓글 표시
I have this vector:
arr = [1; 2; 3; 1; 2; 3; 1; 2; 3; 1; 2; 3]
And would like to turn it into a 4x3 matrix looking like this:
mat = [1 1 1;...
2 2 2;...
3 3 3;...
1 1 1;...
2 2 2;...
3 3 3;...
1 1 1;...
2 2 2;...
3 3 3;...
1 1 1;...
2 2 2;...
3 3 3]
So far I achieved this by doing:
a1 = arr(1:3:end);
a2 = arr(2:3:end);
a3 = arr(3:3:end);
mat = [a1 a2 a3];
Is there a more convenient way with for instance the
reshape
function?
댓글 수: 1
Stephen23
2018년 11월 22일
"And would like to turn it into a 4x3 matrix looking like this"
But what you showed is a 12x3 matrix.
So which is correct: what you wrote (4x3) or what you showed us (12x3) ?
답변 (3개)
madhan ravi
2018년 11월 22일
편집: madhan ravi
2018년 11월 22일
>> arr = [1; 2; 3; 1; 2; 3; 1; 2; 3; 1; 2; 3]
mat=repmat(arr,1,3)
arr =
1
2
3
1
2
3
1
2
3
1
2
3
mat =
1 1 1
2 2 2
3 3 3
1 1 1
2 2 2
3 3 3
1 1 1
2 2 2
3 3 3
1 1 1
2 2 2
3 3 3
>>
Stephen23
2018년 11월 22일
0 개 추천
>> mat = [arr,arr,arr]
mat =
1 1 1
2 2 2
3 3 3
1 1 1
2 2 2
3 3 3
1 1 1
2 2 2
3 3 3
1 1 1
2 2 2
3 3 3
Guillaume
2018년 11월 22일
If you want to achieve what your code does instead of the result you show (see Stephen's comment):
mat = reshape(arr, 3, []).'
Otherwise, use Madhan's or Stephen's answer.
카테고리
도움말 센터 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!