Elegant way of "sending to the next row" in a matrix

Hello,
I have a 1x36 matrix that I want to cut in bits. In my specific case I want to obtain a 6x6 matrix from this 1x36 matrix. Every 6 column of the original 1x36 matrix I want to go to a next row.
How can I do this in an elegant way?
Thanks!

 採用された回答

Anthony Poulin
Anthony Poulin 2015 年 9 月 10 日

1 投票

I have not the same result and using a transpose I think that I get what you want.
A=1:10;
B=reshape(A, [5,2])'
So, B =
1 2 3 4 5
6 7 8 9 10

1 件のコメント

Stephen23
Stephen23 2015 年 9 月 10 日
編集済み: Stephen23 2015 年 9 月 10 日
Note that you should use the non-conjugate transpose .' rather than a simple '.
In fact it is a good habit to always use the non-conjugate transpose unless you specifically need the complex conjugate.

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

その他の回答 (1 件)

Anthony Poulin
Anthony Poulin 2015 年 9 月 10 日

0 投票

Hello,
Do you try to use the "reshape" function?

2 件のコメント

Matt
Matt 2015 年 9 月 10 日
Yes, but it doesn't give me what I want. For example if I have the following matrix (as per Matlab example):
A = 1:10;
If I reshape it with this command:
B = reshape(A,[5,2]);
It will give me:
1 3 5 7 9
2 4 6 8 10
But what I want is:
1 2 3 4 5
6 7 8 9 10
Hamoon
Hamoon 2015 年 9 月 10 日
編集済み: Hamoon 2015 年 9 月 10 日
B=reshape(A,[5,2])
means B will be a (5*2) matrix, you're doing something wrong Matt, just clear your workspace variables and try again. as Anthony said you'll get the result you want using:
A=1:10;
B=reshape(A,[5,2]);
C=B';
C is what you want, and B is a (5*2) matrix
B =
1 6
2 7
3 8
4 9
5 10
C =
1 2 3 4 5
6 7 8 9 10

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

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

質問済み:

2015 年 9 月 10 日

編集済み:

2015 年 9 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by