3 views (last 30 days)

Show older comments

Is it possible to convert the vector to matrix .unknown number of columns and the number of row is known. Where is the row filled with zeros? Or with holes?

A=[1 2 3 4 5 6 7 8 9]

number of row=3

A=[1 2 3 4

5 6 7 8

9 0 0 0]

Matt J
on 31 Jul 2021

The task is ambiguous without additional specifications on how the number of columns is to be chosen. For example, with the input,

A=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];

nrows=3;

there are at least three possible 3-row arrangements that would be valid:

B=[1 2 3 4 5

6 7 8 9 10

11 12 13 14 15]

B=[1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 0 0 0]

B=[1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 0 0 0 0 0 0]

dpb
on 29 Jul 2021

A=1:9;

nRow-3;

>> A=reshape(A,3,[])

A =

1 4 7

2 5 8

3 6 9

>>

The posted in the Q? text above forced four columns, not three (3) rows...

That, of course, is also doable with a little more effort...

A=1:9;

nCol=4;

nZ=ceil(numel(A)/4);

>> reshape([A zeros(1,nCol*nZ-numel(A))],nCol,[]).'

ans =

1 2 3 4

5 6 7 8

9 0 0 0

>>

Image Analyst
on 31 Jul 2021

Matt J
on 29 Jul 2021

No, the solution is ill-defined. Another result with the same number of rows is:

A=[1 2 3

4 5 6

7 8 9]

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

Start Hunting!