Julia 如何执行嵌套迭代?
我定义了一个函数Julia 如何执行嵌套迭代?,julia,Julia,我定义了一个函数m(r,T,a,w)并且我有变量r,T,w的向量。 我想做的是取这些向量中的第一个元素,在1:T中迭代函数,然后取和,对这些向量的第二个元素重复这个迭代,依此类推。 最后我想得到一个由所有和组成的向量。 谢谢你的帮助 到目前为止,我尝试的是: (W、R、LE分别是W、R、T变量的向量) 显然Julia不知道我想做什么语法: for w in W, r in R, T in LE ... 不同时在向量上迭代。相反,它相当于产品: for w in W for r
m(r,T,a,w)
并且我有变量r,T,w的向量。
我想做的是取这些向量中的第一个元素,在1:T中迭代函数,然后取和,对这些向量的第二个元素重复这个迭代,依此类推。
最后我想得到一个由所有和组成的向量。
谢谢你的帮助
到目前为止,我尝试的是:
(W
、R
、LE
分别是W
、R
、T
变量的向量)
显然Julia不知道我想做什么语法:
for w in W, r in R, T in LE
...
不同时在向量上迭代。相反,它相当于产品:
for w in W
for r in R
for T in LE
...
听起来你想同时迭代这三个向量。在这种情况下,您可以使用zip
:
for (w,r,T) in zip(W,R,LE)
...
语法:
for w in W, r in R, T in LE
...
不同时在向量上迭代。相反,它相当于产品:
for w in W
for r in R
for T in LE
...
听起来你想同时迭代这三个向量。在这种情况下,您可以使用zip
:
for (w,r,T) in zip(W,R,LE)
...
Matt的答案是正确的,但您可能需要改进一些其他方面,例如类型,并将其放在函数中,使其不使用全局变量。你知道总数是多少吗?一个Float64
有效,还是一个Int64
?
例如:
function myfun(W, R, LE)
M = Vector{Float64}()
for (w, r, T) in zip(W, R, LE), a in T
push!(M, sum(m(r, T, a, w)))
end
M
end
Matt的答案是正确的,但您可能需要改进一些其他方面,例如类型,并将其放在函数中,使其不使用全局变量。你知道总数是多少吗?一个Float64
有效,还是一个Int64
?
例如:
function myfun(W, R, LE)
M = Vector{Float64}()
for (w, r, T) in zip(W, R, LE), a in T
push!(M, sum(m(r, T, a, w)))
end
M
end
谢谢你的宝贵意见。我成功地编写了我想要的代码
MM = Vector{Float64}()
M = Vector{Float64}()
for (w, r, T) in zip(W, R, LE)
for a in 1:T
push!(MM, m(r,T,a,w))
end
push!(M,sum(MM))
end
谢谢你的宝贵意见。我成功地编写了我想要的代码
MM = Vector{Float64}()
M = Vector{Float64}()
for (w, r, T) in zip(W, R, LE)
for a in 1:T
push!(MM, m(r,T,a,w))
end
push!(M,sum(MM))
end
请展示您为执行此任务而编写的代码,并描述您在该代码中的具体问题。谢谢,我编辑了我的帖子“显然Julia不会意识到我试图做什么”您到底面临着什么样的问题?代码崩溃了吗?我还是完全不知道你在问什么。抱歉,我对编程基本上是新手,我的向量R,W,LE
是52×1数据数组。数据数组{Any,2}
,但是向量m
,我计算的是6086704个元素。我只是不知道如何告诉Julia保持向量的第一个元素R,W,LE
固定,然后计算a在1:T中的迭代次数之和,然后继续向量的第二个元素,计算a在1:T中的迭代次数之和,请显示您为执行此任务而编写的代码,并描述您在该代码中的确切问题。谢谢,我编辑了我的帖子“显然Julia不知道我想做什么”你到底面临什么样的问题?代码崩溃了吗,等等?我仍然完全不知道你在问什么。对不起,我对编程一般来说是相当陌生的,我的向量R,W,LE
是52×1数据数组。数据数组{Any,2}
,然而向量M
,我计算的是6086704个元素。我只是不知道如何告诉Julia保持向量R,W,LE
的第一个元素不变,然后计算1:T中a的迭代和,然后继续计算向量的第二个元素并计算迭代f的和或1:T中的a
。。。