如何解决集合中的“ undefined var”错误?

时间:2019-08-04 10:23:52

标签: julia

请帮助我如何解决以下代码中的未定义var错误:

Beta
6×3×3 Array{Array{Int64,1},3}:
[:, :, 1] =
 [4, 2, 5, 3, 6]  [4, 2, 5, 3, 6]  [4, 2, 5, 3, 6]
 [5, 3, 6]        [5, 3, 6]        [5, 3, 6]
 [6]              [6]              [6]
 [2, 5, 3, 6]     [2, 5, 3, 6]     [2, 5, 3, 6]
 [3, 6]           [3, 6]           [3, 6]
 [1, 4, 2, 5, 3]  [1, 4, 2, 5, 3]  [1, 4, 2, 5, 3]
[:, :, 2] =
 [4, 2, 5, 3, 6]  [4, 2, 5, 3, 6]  [4, 2, 5, 3, 6]
 [5, 3, 6]        [5, 3, 6]        [5, 3, 6]
 [6]              [6]              [6]
 [2, 5, 3, 6]     [2, 5, 3, 6]     [2, 5, 3, 6]
 [3, 6]           [3, 6]           [3, 6]
 [1, 4, 2, 5, 3]  [1, 4, 2, 5, 3]  [1, 4, 2, 5, 3]
[:, :, 3] =
 [4, 2, 5, 3, 6]  [4, 2, 5, 3, 6]  [4, 2, 5, 3, 6]
 [5, 3, 6]        [5, 3, 6]        [5, 3, 6]
 [6]              [6]              [6]
 [2, 5, 3, 6]     [2, 5, 3, 6]     [2, 5, 3, 6]
 [3, 6]           [3, 6]           [3, 6]
 [1, 4, 2, 5, 3]  [1, 4, 2, 5, 3]  [1, 4, 2, 5, 3]

Beta是一个数组矩阵和d矩阵,如下所示:

d=[    0.0  105.0  119.0   55.0  123.0  44.0
     105.0    0.0   76.0  135.0   42.0  81.0
     119.0   76.0    0.0  170.0   42.0  76.0
      55.0  135.0  170.0    0.0  164.0  97.0
     123.0   42.0   42.0  164.0    0.0  86.0
      44.0   81.0   76.0   97.0   86.0   0.0];

sum(d[i,j]*x[i,j,k,t] for i in 1:6,j in Set(Beta[i,k,t]), t in 1:3, k in 1:3 )

ERROR: UndefVarError: i not defined
Stacktrace:
 [1] macro expansion at C:\Users\admin\AppData\Local\JuliaPro-0.6.4.
1\pkgs-0.6.4.1\v0.6\Atom\src\repl.jl:118 [inlined]
 [2] anonymous at .\<missing>:?

为什么会发生此错误?如果您不介意,请帮助我解决该错误。谢谢

1 个答案:

答案 0 :(得分:1)

Julia手册的Generator Expressions部分中说明了所需的功能:

  

生成器和理解的范围可以通过编写多个关键字来取决于先前的范围:

julia> [(i,j) for i=1:3 for j=1:i]
6-element Array{Tuple{Int64,Int64},1}:
 (1, 1)
 (2, 1)
 (2, 2)
 (3, 1)
 (3, 2)
 (3, 3)
  

在这种情况下,结果始终为1-d。