2016-11-08 2 views
0

У меня есть вектор с размером (1,9) со значением следующим образом:Как преобразовать вектор в матрицу? (Matlab)

V= [0.5 0.1 0.1 0.9 0.5 0.1 0.9 0.9 0.5] 

Как можно преобразовать вектор V в матрицу M с размером (3,3) которой первая строка первых 3 элементов вектора, а вторая строка содержит следующие 3 элементов вектора и поддержание этого правила для всех других элементов вектора следующим образом:

 0.5 0.1 0.1 
M=  0.9 0.5 0.1 
     0.9 0.9 0.5 

Кроме того, для разных размеров векторы, например, например, (1,100), как я могу преобразовать в матрицу базы (10,10) по правилу abo ве?

ответ

4

Использование reshape, а затем перенести результат:

M = reshape(V, 3, 3).'; 

reshape преобразует вектор в матрицу нужного размера. Матрица создана в column-major заказ. Поэтому просто использование reshape само по себе будет размещать элементы в столбцах. Поскольку вы хотите, чтобы элементы были заполнены рядами, трюк состоит в том, чтобы просто транспонировать результат.

В общем, вы хотите, чтобы изменить N элемент вектора V а в квадратную матрицу M размера sqrt(N) x sqrt(N) в строке-мажорных порядке. Вы можете сделать это в общем случае:

N = sqrt(numel(V)); 
M = reshape(V, N, N).'; 

Это, конечно, предполагает, что общее число элементов в V является квадратом.

Смежные вопросы