Я пытаюсь найти способ ускорить умножение трехмерных массивов.В настоящее время я использую цикл For для умножения.
Предположим, у нас есть массив 1 x 3 x 100 000 с первым срезом:
\begin{bmatrix}a_1&b_1&c_1\end{bmatrix}
У нас есть 100 000 срезов:
\begin{bmatrix}a_1&b_1&c_1\end{bmatrix}
.....................
\begin{bmatrix}a_{100000}&b_{100000}&c_{100000}\end{bmatrix}
Мы хотим умножить его на массив 3 x 3 x 100 000.Предположим, у нас есть:
\begin{bmatrix}d_1&e_1&f_1\\g_1&h_1&i_1\\j_1&k_1&l_1\end{bmatrix}
Опять же, 100 000 срезов.
В настоящее время я использую цикл For с 100 000 итераций для циклического обхода срезов (простое умножение матриц 1x3 × 3x3 в каждом цикле).
Это довольно быстро.Но мне было интересно, есть ли другие более быстрые методы?
Умножение 3D-матриц в R
, что было предложено более быстрым методом с использованием разреженных матриц в предыдущем посте.Однако его метод становится медленнее, когда размеры увеличиваются.По сути, я пытаюсь найти метод, который быстрее простого цикла For для любых массивов 1 xnxp times nxnxp.
Любая помощь будет принята с благодарностью!