Вопрос

Предположим, у меня был 1 на 12 Матрица и я хотели изменить его на 4 на 3 матрица. Как я мог это сделать?

Мое текущее решение довольно уродливое:

for n = 1:(length(mat)/3)
    out(n,1:3) = mat( ((n-1)*3 + 1):((n-1)*3 + 3) );
end

Есть лучший способ сделать это?

Это было полезно?

Решение

reshape конечно, является правильным решением, как указано @gnovice.

Хорошая особенность reshape это то, что это позволяет это:

A = 1:12;
B = reshape(A,4,[]);
B =
     1     5     9
     2     6    10
     3     7    11
     4     8    12

Так что, если вы не знаете, сколько будет столбцов, reshape Вычислит это для вас. Так же, reshape Заполнит количество рядов, если вы оставите это.

C = reshape(A,[],4)
C =
     1     4     7    10
     2     5     8    11
     3     6     9    12

Другие советы

Попробуйте Решап Функция:

A = (1-by-12 matrix);
B = reshape(A,4,3);

Обратите внимание, что матрица Беременный будет заполнен элементами из А в столбцевом виде (т.е. столбцы будут заполнены сверху вниз, движущиеся влево вправо).

Пример:

>> A = 1:12;
>> B = reshape(A,4,3)

B =

     1     5     9
     2     6    10
     3     7    11
     4     8    12

Чтобы расширить решение Гновиса:

Если вам нужен другой порядок строительства матрицы, используйте Transpose (оператор ') или permute() Чтобы изменить заказ измерения после того, как вы позвонили reshape().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top