如何在朱莉娅中专注于广播?

问题描述 投票:0回答:2

我想为广播操作编写自定义方法

f.(v)

我的自定义功能

f
。为此我需要做什么?

julia array-broadcasting
2个回答
2
投票

您需要谷歌搜索julia接口(非广播)才能找到相关手册

摘录:

的广播行为
实施方法 简要说明
Base.BroadcastStyle(::Type{SrcType}) = SrcStyle()
SrcType
Base.similar(bc::Broadcasted{DestStyle}, ::Type{ElType})
输出容器的分配
可选方法
Base.BroadcastStyle(::Style1, ::Style2) = Style12()
混合风格的优先规则
Base.axes(x)
根据
x
声明
axes(x)
的索引。
Base.broadcastable(x)
x
转换为具有
axes
且支持索引的对象
绕过默认机制
Base.copy(bc::Broadcasted{DestStyle})
自定义实现
broadcast
Base.copyto!(dest, bc::Broadcasted{DestStyle})
自定义实现
broadcast!
,专注于
DestStyle
Base.copyto!(dest::DestType, bc::Broadcasted{Nothing})
自定义实现
broadcast!
,专注于
DestType
Base.Broadcast.broadcasted(f, args...)
覆盖融合表达式中的默认惰性行为
Base.Broadcast.instantiate(bc::Broadcasted{DestStyle})
覆盖惰性广播轴的计算

0
投票

您可能会发现this线程很有用。简而言之,

Broadcast.broadcasted
结构允许您专门化广播操作的特定情况。例如,考虑
v
是向量的情况,那么操作
f.(v)
的重载将如下所示:

function Broadcast.broadcasted(::typeof(f), v::Vector{T}) where T
    # Write your custom implementation here to compute the output
    ...
    
    return output
end

如果您有多种情况想要专门化,那么您要么必须逐一进行,要么编写自定义广播样式,如另一个答案提到的那样。

© www.soinside.com 2019 - 2024. All rights reserved.