Я бы рекомендовал не создавать переменные D1
до D15
напрямую, а хранить их в векторе векторов и присваивать им следующее:
D = [zeros(3300) for i in 1:15]
for i in 1:3300
D[dt[i,2]][i] = 1
end
Теперь D[i]
являетсяэквивалент вашего Di
.
И если вы действительно хотите иметь Di
переменные в глобальной области видимости, вы можете позже написать, например:
for i in 1:15
eval(:($(Symbol("D", i)) = D[$i]))
end
, и вы получите Di
переменные.
Символ :
имеет две синтаксические цели в Юлии.Первая форма создает Symbol, внутреннюю строку, используемую в качестве одного из строительных блоков выражений:
julia> :foo
:foo
julia> typeof(ans)
Symbol
Вторая - оператор Range.a:b
создает диапазон от a до b с размером шага 1 (UnitRange), а a:s:b
аналогичен, но использует размер шага s (StepRange).
Джулия позволяетинтерполяция в строковые литералы с использованием $
, как в Perl:
julia> "$greet, $whom.\n"
"Hello, world.\n"
julia> "1 + 2 = $(1 + 2)"
"1 + 2 = 3"
Аналогичным образом вы можете интерполировать в выражения, например:
julia> x = 1
1
julia> :(x = $x)
:(x = 1)
Symbol
Создает символ путем объединения строковых представлений аргументов вместе.
julia> Symbol("my", "name")
:myname