У меня есть матрица 2x2
, которую я хочу умножить на 10 раз, сохраняя результат после каждого умножения. Это можно легко сделать с помощью цикла for
, но я бы хотел процитировать его, исключив цикл for
. Мой подход состоял в том, чтобы иметь мою 2x2-матрицу a
и поднять ее до вектора b
с элементами 1:10
. Ответ должен быть 2x2x10
матрицей, которая реплицируется набравКак поднять матрицу к вектору степеней в matlab без цикла?
a^b(1)
a^b(2)
.
.
.
a^b(10)
Для уточнения я не делаю этот элемент мудрый мне нужно реально матричное умножение, и предпочитаю не использовать for
петли. Спасибо за любую помощь, которую вы можете мне дать.
Вы, вероятно, должны зациклиться на этом. Плюс, матричный цикл 2x2 определенно не о чем беспокоиться. «Ранняя оптимизация - это корень всего зла»! –
Ответ на этот вопрос ** s ** на [этот вопрос] (http://stackoverflow.com/q/35034584/3372061) может быть применим к вашей проблеме. Кроме того, вы можете получить другие идеи из [здесь] (https://en.wikipedia.org/wiki/State-transition_matrix). Наконец, есть [это представление FEX] (http://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support) .... –
Это может быть только сделано с петлей, но это очень быстро. Не скидывайте петли только потому, что вам сказали, что они вообще ужасны. Петли могут быть довольно быстрыми, если вы ** знаете **, как правильно их использовать. См. Сообщение, связанное как дубликат, для получения более подробной информации. – rayryeng