В R
функция outer
структурно позволяет вам брать внешнее произведение двух векторов x
и y
, обеспечивая при этом ряд опций для фактической функции, применяемой к каждой комбинации. Например, outer(x,y,'-')
создает матрицу «внешнего продукта» поэлементных различий между x
и y
. Есть ли у Юлии что-то подобное?
Почему бы просто не использовать x * y'
? Не уверен, что такое -
, если это внешний продукт. Или вы можете искать трансляцию: x .- y'
? — person jjjjjj schedule 16.06.2017
Широковещательная передача — это операция Джулии, которая происходит при добавлении
.
. Когда два контейнера имеют одинаковый размер, это поэлементная операция. Пример:x.*y
поэлементно, еслиsize(x)==size(y)
. Однако, когда формы не совпадают, тогда действительно вступает в силу трансляция. Если один из них является вектором-строкой, а один из них — вектором-столбцом, то выходные данные будут двухмерными сout[i,j]
, совпадающими сi
-й строкой вектора-столбца с вектором-строкойj
. Это означает, чтоx .* y
— это своеобразный способ записи внешнего продукта, если один является строкой, а другой — вектором-столбцом.В общем, вещание делает следующее:
(Это из руководства Julia)
Но это распространяется на все другие бинарные операторы, поэтому
x .- y'
— это то, что вы ищете.Фактически,
x .- y'
— это то, что он ищет. — person jjjjjj; 16.06.2017Отлично, спасибо! Есть ли способ обобщить за пределами (_1 _, _ 2 _, _ 3 _, _ 4_)? Например, есть ли предпочтительный способ сделать это с помощью некоторой функции
f
, которая принимает два аргумента? — person jjjjjj; 17.06.2017Так может транслироваться любой бинарный оператор. Для вызовов функций вы можете использовать
f.(x,y')
. — person jjjjjj; 17.06.2017Что делать, если вы априори не знаете,
size(x)==size(y)
или нет. Но в любом случае вам определенно нужна внешняя матрица продуктов. — person jjjjjj; 23.01.2018Это не имеет значения для внешних продуктов, и я объяснил почему. — person jjjjjj; 23.01.2018
Строка и вектор-столбец имеют одинаковый размер, только если один из них имеет длину 1. Понятно. — person jjjjjj; 23.01.2018