gpt4 book ai didi

arrays - 调整向量大小 Julia

转载 作者:行者123 更新时间:2023-12-04 14:22:51 24 4
gpt4 key购买 nike

所以我正在尝试像这样在 Julia 中调整向量向量的大小:

A = [Vector{Any}() for i in 1:6]
a, b, c, d, e, f, g, h = 3, 4, 5, 6, 7, 8, 9, 10
for tt = 1:6
a+=1
resize!(A[tt], a)
for rr = 1:a
b+=1
resize!(A[tt][rr], b)
for tt2 = 1:b
resize!(A[tt][rr][tt2], b)
end
end
end

我收到这个错误:

UndefRefError: access to undefined reference

Stacktrace: [1] getindex(::Array{Any,1}, ::Int64) at ./array.jl:549 [2] macro expansion at ./In[70]:7 [inlined] [3] anonymous at ./:?

有什么帮助吗?

最佳答案

您的代码有两个问题。

问题 1resize! 更改矢量的大小但不初始化其元素。如果 vector 的元素类型为 Any,则条目将为 #undef,这意味着未初始化。在访问之前,您必须先初始化它们。

这是一个例子:

julia> A = Any[]
0-element Array{Any,1}

julia> resize!(A, 1)
1-element Array{Any,1}:
#undef

julia> resize!(A[1], 1) # you get an error
ERROR: UndefRefError: access to undefined reference
Stacktrace:
[1] getindex(::Array{Any,1}, ::Int64) at .\array.jl:549

julia> A[1] = Any[]
0-element Array{Any,1}

julia> A
1-element Array{Any,1}:
Any[]

julia> resize!(A[1], 1) # now it works
1-element Array{Any,1}:
#undef

julia> A
1-element Array{Any,1}:
Any[#undef]

问题 2。您的代码将无法在 Julia 1.0 下运行,因为您正试图在循环内修改全局变量(例如 a in line a += 1)。将您的代码包装在一个函数或 let block 中,以使其不会抛出错误。

关于arrays - 调整向量大小 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51924323/

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