【发布时间】:2021-05-26 20:20:41
【问题描述】:
我在一个可变结构中声明了一些向量。然后我在其他方法中创建和使用它们,但我不断收到以下错误:
ERROR: LoadError: TypeError: in Vararg, in count, expected Int64, got Type{Float64}
Stacktrace:
[1] top-level scope at C:\Users\taylo\OneDrive\SummerResearch2021\RK Programs\Julia\RK_JuliaOriginal2.jl:4
[2] include(::Function, ::Module, ::String) at .\Base.jl:380
[3] include(::Module, ::String) at .\Base.jl:368
[4] exec_options(::Base.JLOptions) at .\client.jl:296
[5] _start() at .\client.jl:506
in expression starting at C:\Users\taylo\OneDrive\SummerResearch2021\RK Programs\Julia\RK_JuliaOriginal2.jl:4
我确实看到了一些其他类似的东西,但解决方案要么不能直接应用于此,要么没有帮助。我对 Julia 还是很陌生。 下面是所有相关代码(它缺少很多变量声明和计算,但那些东西与此无关。谢谢!
mutable struct JuliaNeuron
RK_dm::NTuple{Float64}
RK_dh::NTuple{Float64}
RK_dn::NTuple{Float64}
RK_dVm::NTuple{Float64}
end
function RK(neuron::JuliaNeuron, RKindex::Int64, RK_dm, RK_dh, RK_dn, RK_dVm)
RK_dm[RKindex] = aM * (1 - m) - bM * m
RK_dh[RKindex] = aH * (1 - h) - bH * h
RK_dn[RKindex] = aN * (1 - n) - bN * n
end
function calculateNextTimeStep(stimulus::Float64, neuron::JuliaNeuron, RK_dm, RK_dh, RK_dn, RK_dVm)
# k1 Runge-Kutta step
RK(neuron, 0, stimulus, neuron.m, neuron.h, neuron.n, neuron.v, RK_dm, RK_dh, RK_dn, RK_dVm)
end
function simulate()
RK_dm = (0.0,0.0,0.0,0.0)
RK_dh = (0.0,0.0,0.0,0.0)
RK_dn = (0.0,0.0,0.0,0.0)
RK_dVm = (0.0,0.0,0.0,0.0)
# create a neuron
neuron = JuliaNeuron(RK_dm, RK_dh, RK_dn, RK_dVm)
for i = 1:N
push!(t, (i*dt))
push!(Vm, calculateNextTimeStep(stimAmplitude, neuron, RK_dm, RK_dh, RK_dn, RK_dVm))
end
end
【问题讨论】:
-
对于您的第一个问题,您可以将结构定义为
mutable struct JuliaNeuron{T<:Real}并将每个Float64替换为T。这里不能运行的另一件事是字段m、h、n、v未定义。您想用RK_dm等替换它们(反之亦然)。如果它仍然不起作用,请修复并编辑您的问题。 :-)
标签: arrays error-handling compiler-errors julia