我收到Bounds错误(),我不知道如何修复

时间:2015-11-26 15:15:48

标签: julia

我收到错误BoundsError()继续在setindex中说出'在array.jl.310(重复2次)'我不知道为什么

已经打开了一个文件,并把txt文件转换成了一些字符串变量,但我只是在本节中遇到问题,所以尝试将它放在一个函数中,但没有快乐

 function electronDensityFunction() 

 z=1
 y=1
 x=1

  for i = 1:arraySizeBy6 # As data in 6 colums in .txt file
  electronDensityString = readline(f)
  electronDensityArray = split(electronDensityString,;) # split string into array

for j = 1:6
  electronDensitytTempString  = electronDensityArray[j]
  electronDensitytTempFloat = parsefloat(Float64,electronDensitytTempString) # make string a float

  #fills z first then y then x 
    if z ==zSize
    y=y+1
    z=0
  else
    z=z+1
  end
  if y==ySize
    x=x+1
    y=0
  end
  electronDensity[x,y,z] = electronDensitytTempFloat
end
end
end

electronDensityFunction()

2 个答案:

答案 0 :(得分:2)

有些令人担忧的事情包括split(electronDensityString,;)(我认为应该是";"),但我也看到了

if z ==zSize
  y=y+1
  z=0
else
  z=z+1
end
if y==ySize
  x=x+1
  y=0
end
electronDensity[x,y,z] = electronDensitytTempFloat

会定期将索引设置为0,这是不正确的。我想你可能想把它们设置为1而不是0,但如果没有数据集(或它的样本),我们就无法重现错误。

答案 1 :(得分:0)

readdlm()函数执行从文本文件中读取数据矩阵的任务,更好的方法是使用此函数。检查here以获取有关其用例的更多详细信息,然后可以将reshape()函数应用于生成的矩阵,并创建所需维度的数组。