Юлия | Элемент массива как аргумент другого массива - PullRequest
0 голосов
/ 27 июня 2018

У меня проблема с индексацией, когда элемент массива является аргументом для другого массива. Это приводит к ошибке «неверный индекс 1.0». Например:

i = 0    

for l in 1:length
    for s in 1:ser
        for x in 1:s

        i = i + 1

        arr1[i] = x

        end
    end
end



for ts in 1:tiser

arr2[ts] = arr3[arr1[ts]]

end

Вот код, который вы можете скопировать в REPL и найти ошибку. То, что я получаю, является ошибкой индекса.

arr1 = Array{Float64,1}(1500)   
arr2 = Array{Float64,1}(10000)
arr3 = Array{Float64,1}(10000)


for z in 1:100

    arr3[z] = 1 + z

end


i = 0    

for l in 1:100
    for s in 1:5
        for x in 1:s

        i = i + 1

        arr1[i] = x

        end
    end
end



for ts in 1:10000

    arr2[ts] = arr3[arr1[ts]]

end

println(arr2[3])

Спасибо

1 Ответ

0 голосов
/ 27 июня 2018

Вам нужно привести плавающее число из arr1, чтобы использовать его в качестве индекса. Я изменил минимальный рабочий пример для работы:

arr1 = Array{Float64,1}(1500)   
arr2 = Array{Float64,1}(10000)
arr3 = Array{Float64,1}(10000)


for z in 1:100

    arr3[z] = 1 + z

end


i = 0    

for l in 1:100
    for s in 1:5
    for x in 1:s
        i = i + 1
        arr1[i] = x
    end
    end
end

println(arr1[1:20])

for ts in 1:10000
    from_arr1_as_index=Int(arr1[(ts-1)%1500+1])
    arr2[ts] = arr3[from_arr1_as_index]
end


println(arr2[3])
...