具有可变边界的朱莉娅循环给出"invalid index"



当我这样做时,在朱莉娅中:

N=1000;
for i = 2:N,
    alpham[i] = 0.1 * (V[i-1]+40.) / (1. - exp(-(V[i-1]+40.)/10.));
end

长度为 1000 的 alpham 和 V 向量。我收到错误"参数错误:无效索引:1.0"。但是,如果我这样做:

for i = 2:1000,

它确实有效。有什么理由为什么前一个没有,或者有什么方法我仍然可以在我的 for 循环中使用 N?我做错了什么吗?

提前感谢,森特罗

ArgumentError 告诉您正在使用Float64进行索引,这样做在 Julia 中没有定义。在您的最小工作示例 (MWE) 中,您将N初始化为 1000(一个Int),因此 MWE 实际上不会重现错误,但在您的注释中,您注意到在您的原始代码中,您得到 N 作为 floor(x) ,这返回一个浮点数。要获得Int您需要floor(Int, x).

还有一些语法问题:for i = 2:1000后不应该有,,通常不需要以;结束语句。

请注意,您应该确保 MWE 可以纯粹通过将代码复制粘贴到 REPL 中来运行(即需要初始化变量,alpham, V = ones(1000), ones(1000) )。在发布之前自行运行它,以确保它重现您报告的错误,并捕获任何语法错误。

最新更新