位置2的索引超出数组边界错误

3次查看(最近30天)
周杰伦
周杰伦 2020年5月1日
回答: Guillaume 2020年5月1日
函数my_function (x,它,dt)
全球时间;
全球t;
如果t = = 1
输出。Num_useful = 0;
输出。Deno = 0;
结束
...
%开始时间模拟迭代
k = 1:1
k;
如果(时间(t) 1) / 3600) < 24最后一次检查
t = t + 1;%更新全局计数器
Time (t,1)= Time (t, 1,1) + dt;%更新全局时间[s]
n1 =时间(t) 1) / 3600;更新时间[h]
结束
结束
我得到以下错误
指数位置2超出数组边界。
错误在my_function中(第99行)
如果(时间(t) 1) / 3600) < 24
我该如何解决这个问题?

答案(1)

Guillaume
Guillaume 2020年5月1日
我该如何解决这个问题?
通过确保 时间 在调用函数之前至少有一列。目前,它是空的,因为它甚至没有一列。
不幸的是, 时间 还有名字不好的 t 是全球性的,而你刚刚与其中一个 许多 全局变量的问题。很难跟踪它们的状态,因为任何一段代码都可以修改(或者不应该修改)全局变量的状态。
我的建议是重写您的代码,使它完全不使用全局变量。不幸的是,我们没有足够的信息给更多的建议。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!