How to get row and column from a vector size

조회 수: 17 (최근 30일)
Houssam
Houssam 2021년 6월 18일
댓글: Houssam 2021년 6월 19일
Hi matlab Community
i am back again with anouther question
i have a vector with variable length like this :
Vector = [10 20 30 40 50 60 70 80 9 100]
> numel(Vector) =
10
or
Vector = [ 1 2 3 4 5 ]
> numel(Vector) =
5
i want to reshape the vector to a matrix with the 2 largest row and coluumn.
but i can't find out how to go from vector size to matrix row and column
thanks in advance
  댓글 수: 3
James Tursa
James Tursa 2021년 6월 18일
What do you mean by "2 largest row and column"? Please give examples of reshaped results.
the cyclist
the cyclist 2021년 6월 18일
Also, because 5 is a prime number, your example
Vector = [ 1 2 3 4 5 ];
cannot be shaped into a matrix (other than 1x5 or 5x1), so you might want to clarify that case as well.

댓글을 달려면 로그인하십시오.

채택된 답변

Scott MacKenzie
Scott MacKenzie 2021년 6월 18일
편집: Scott MacKenzie 2021년 6월 18일
Assuming the vector length being a prime number (as noted by @the cyclist) is just one possible case of many, then the following code achieves the desired goal:
% test vector
v = rand(1,randi([1 100]));
n = length(v);
n1 = round(sqrt(n));
while n1 > 1
if ~rem(n,n1)
break;
end
n1 = n1 - 1;
end
n2 = n/n1;
fprintf('For %d elements, max matrix is %d x %d\n', n, n1, n2);
M = reshape(v, n1, n2); % reshaped vector
Output for some example runs:
For 18 elements, max matrix is 3 x 6
For 36 elements, max matrix is 6 x 6
For 44 elements, max matrix is 4 x 11
For 59 elements, max matrix is 1 x 59
  댓글 수: 1
Houssam
Houssam 2021년 6월 19일
thanks very mush, this exactly what i was looking for,
but there is always that problem of primary numbers!
so i've decided to to choose 512 as a number of columns
and add zeros at the end of the file so that it can be devided by that number of rows

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by