gpt4 book ai didi

julia - 为什么 julia 广播在处理多个数组时不起作用?

转载 作者:行者123 更新时间:2023-12-01 23:16:00 25 4
gpt4 key购买 nike

我定义了两个结构体和一个这样的函数

struct A
x::Float64
end

struct B
y::Float64
end

f(a::A, b::B) = a.x*sin(b.y)
f.([A(0.1), A(0.2)], [B(1.), B(2.), B(3.)])

但是 f 返回这个错误:

DimensionMismatch("arrays could not be broadcast to a common size")

如何解决这个错误?我期望一个包含 6 个元素的数组作为函数输出。

最佳答案

问题是您的第一个参数是 2 元素 Vector,第二个参数是 3 元素 Vector

如果你例如将第一个参数设为 1x2 Matrix,然后一切正常:

julia> f.([A(0.1) A(0.2)], [B(1.), B(2.), B(3.)])
3×2 Array{Float64,2}:
0.0841471 0.168294
0.0909297 0.181859
0.014112 0.028224

(请注意,缺失的或长度为 1 的维度会自动广播)

请注意,您还可以广播对 AB 构造函数的调用:

f.(A.([0.1 0.2]), B.(1.:3.))

关于julia - 为什么 julia 广播在处理多个数组时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com