Я пытаюсь использовать mapslices
(возможно, это даже неправильный подход) таким образом, чтобы я мог транслировать функцию по «фрагментам» многомерного массива, где функция включает другой массив, который является всегда одинаково для каждой итерации трансляции. Можно ли это сделать с помощью mapslices
или map
?
Вот конкретная проблема:
У меня есть функция F(X,Y)
, которая принимает на вход 2-мерные массивы X
и Y
. X имеет размер (D, N)
и имеет тип = Array{Float32,2}
), тогда как Y также имеет размер (D, 1)
, с типом = Array{Float32,2}
.
F(X,Y)
выполняет операцию с двумя матрицами X
и Y
, чтобы получить массив размером (N, 1)
.
Проблема трансляции / отображения: у меня есть больший 3-D массив X_all
, чьи «срезы» (например, матрицы, сложенные длинными третьими Dimension, например X[:,:,1]
) являются примерами входных массивов X с размерами (D,N)
, которые должны быть входами в F(X,Y)
. И Y
всегда константа.
Итак, пример X_all
будет иметь форму (D, N, 5)
, при этом Y
по-прежнему будет (D,1)
, и я хочу, чтобы вывод широковещательной передачи был матрицей в столбце n хранятся результаты применения F
к каждому фрагменту X_all
и Y
. Таким образом, окончательная форма вывода в этом примере должна быть (N,5)
.
Это не работает с broadcast
(ошибка, которую я получаю, предполагает, что F(X,Y)
подаются скалярные числа с плавающей запятой, а не массивы) , поэтому я предполагаю, что это нужно сделать с помощью mapslices
. Единственная проблема заключается в том, что я не могу найти примеров использования mapslices
с несколькими входными аргументами (например, X
и Y
) - обычно я вижу это только с одним входным аргументом.
Есть мысли?