Как изменить размер матрицы в Matlab?
Вопрос
Предположим, у меня был 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()
.