gpt4 book ai didi

arrays - Julia 语言 : How to create an array of structs inside a for loop

转载 作者:行者123 更新时间:2023-12-03 20:08:49 24 4
gpt4 key购买 nike

在这段代码中,我试图创建一个名为 Linestruct 的结构数组

但我收到此错误“绑定(bind)错误,尝试访问 0 元素数组...”

using CSV
df=CSV.read("F:/B/Mayar/lineData.CSV")

struct Linestruct
buses::Vector{Int}
res::Float64
ind::Float64
imp_mag::Float64
imp_angle::Float64
p::Float64
q::Float64
state::String
end
CREATE_Linestruct() = Linestruct([0,0], 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, "overloaded")
Linestruct(buses_line, res_line, ind_line) = Linestruct(buses_line, res_line,
ind_line, 0.0, 0.0, 0.0, 0.0, "overloaded")

l2 = Linestruct([1,2,3], 0.0, 0.0)
l3=CREATE_Linestruct()
number_lines=size(df,1)
array_lines=Array{Linestruct,1}()

for x in 1:N
l4=CREATE_Linestruct()
array_lines[x]=l4


end

最佳答案

问题是这条线

array_lines=Array{Linestruct,1}()

创建一个空数组(即大小为 0 的数组)。

之后,线
array_lines[x]=l4

不会使数组增长(与 Matlab 之类的语言中会发生的情况不同):它会尝试更改索引 x 处的值在数组中。由于数组为空,因此您会收到错误消息。

重现这种情况的最小示例可能是(请注意,我在这里使用了 Int 值的向量,因为您的问题与存储结构而不是 native 类型的数组无关):
julia> a = Array{Int, 1}()
0-element Array{Int64,1}

julia> a[1] = 1
ERROR: BoundsError: attempt to access 0-element Array{Int64,1} at index [1]

解决此问题的一种方法是使用 push! 使数组增长。在其末尾插入新值:
julia> for i in 1:3
push!(a, i)
end

julia> a
3-element Array{Int64,1}:
1
2
3

关于arrays - Julia 语言 : How to create an array of structs inside a for loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60890850/

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