如何在 Julia 中用 2 X 20 数组分配 50 X 20 数组
How to assign 50 X 20 array with 2 X 20 array in Julia
我有以下代码
x=zeros(50,20)
for i=1:50
slect=roulette_select(cprob,pop) # it's a function return 2 X 20 array
x[i,:]=slect
end
但它不起作用。有人可以帮忙吗!
使用完全独立的示例可能会更清楚:
k = 2
function roulette_select (a,b)
return ones(k,20)
end
cprob = 0.5
pop = 1
x=zeros(50,20)
for i=1:50
slect=roulette_select(cprob,pop)
x[i,:]=slect
end
此代码抛出错误:
ERROR: DimensionMismatch("tried to assign 2x20 array to 1x20 destination")
...但是如果我们在第一行设置k = 1
,它运行正常。
问题是 x[i,:]=slect
分配给 1x20 目标,因此需要提供 1x20 数组。
您的问题是您尝试将两列分配给一列,正如错误消息所说。您可以同时分配两行(修改 Simon 的示例):
k = 2
function roulette_select (a, b)
return ones(k, 20)
end
cprob = 0.5
pop = 1
x = zeros(50, 20)
for i = 1:2:50 # <-- You skip over each second line (25 iterations)
slect = roulette_select(cprob, pop)
x[i:i+1,:] = slect # <--- you have to change two lines (i and i+1) at once
end
您可以这样做,或者如果可能,一次将 roulette_select 修改为 return 一行,为什么它 return 两行?
我有以下代码
x=zeros(50,20)
for i=1:50
slect=roulette_select(cprob,pop) # it's a function return 2 X 20 array
x[i,:]=slect
end
但它不起作用。有人可以帮忙吗!
使用完全独立的示例可能会更清楚:
k = 2
function roulette_select (a,b)
return ones(k,20)
end
cprob = 0.5
pop = 1
x=zeros(50,20)
for i=1:50
slect=roulette_select(cprob,pop)
x[i,:]=slect
end
此代码抛出错误:
ERROR: DimensionMismatch("tried to assign 2x20 array to 1x20 destination")
...但是如果我们在第一行设置k = 1
,它运行正常。
问题是 x[i,:]=slect
分配给 1x20 目标,因此需要提供 1x20 数组。
您的问题是您尝试将两列分配给一列,正如错误消息所说。您可以同时分配两行(修改 Simon 的示例):
k = 2
function roulette_select (a, b)
return ones(k, 20)
end
cprob = 0.5
pop = 1
x = zeros(50, 20)
for i = 1:2:50 # <-- You skip over each second line (25 iterations)
slect = roulette_select(cprob, pop)
x[i:i+1,:] = slect # <--- you have to change two lines (i and i+1) at once
end
您可以这样做,或者如果可能,一次将 roulette_select 修改为 return 一行,为什么它 return 两行?