我定义了两个结构和一个像这样的函数
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.)])
Run Code Online (Sandbox Code Playgroud)
但是f返回此错误:
DimensionMismatch(“无法将数组广播为相同大小”)
我该如何解决这个错误?我希望有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
Run Code Online (Sandbox Code Playgroud)
(请注意,缺少的尺寸或1长度尺寸会自动广播)
请注意,您还可以广播对A和B构造函数的调用:
f.(A.([0.1 0.2]), B.(1.:3.))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |