如何调试错误“指数在位置1超过数组界限”?

7视图(30天)
我有一个单元阵列 数据 。尺寸是3 * 9。每一个细胞都是双的数组类。 评论部分是这些数组的大小 。例如,
数据{1}
ans =
644.1262 643.0714 646.7557 647.4521 643.0392 625.5089 623.9397 633.4525 647.2367 640.6563
422.7087 422.5670 425.1260 422.5875 420.1111 436.3631 436.7513 435.9344 487.6950 500.0021
0 0.0028 0.0056 0.0083 0.0111 0.0139 0.0167 0.0194 0.0222 0.0250
1.0000 0 0南南南南南南南
当我试着运行循环检查条件和创建一个新的单元阵列和一些字符串,我得到一个错误在位置1超出数组边界”指数”。
% cellsz = cellfun(@、数据“大学”,假)
% cellsz =
% 3×9单元阵列
%
% {10 [4]}{[67]}{[302]}{[302]}{50 [4]}{[319]}{[118]}{[201]}{[201]}
% {17 [4]}{[362]}{[109]}{[253]}{[253]}{[0 0]}{[0 0]}{[0 0]}{[0 0]}
% {[4 8]}{[4 8]}{[363]}{[88]}{[275]}{[275]}{[4 7]}{[364]}{[364]}
D =大小(数据);
i = 1: D (1)
j = 1: D (2)
如果数据{i, j} (4,1) = = 1
一个{j + 1, 2,我}=“Exc”;
elseif数据{1,3}(4,2)= = 1
一个{j + 1, 2,我}=“好吧”;
其他的
一个{j + 1, 2,我}=“坏”;
结束
结束
结束
你能帮我找出数组中它意味着什么吗?此外,调试此类错误的最好方法是什么?有可能重写这段代码运行得更快?非常感谢你的时间和帮助!我想学习如何代码。

接受的答案

亚当Danz”class=
亚当Danz 2021年9月15日
编辑:亚当Danz 2021年9月15日
>“如何调试错误…”
这是正确的问题(+ 1)。
知道会有一个错误,我开始通过设置暂停错误(下图)。
它停在这条线下面,我评估I和j发现的错误发生在第一次迭代循环。
然后我看到它 数据{i, j} ( 4 ,1)
数据{i, j} 数据{1} 访问的第一个元素 数据 单元阵列, 10 [4] 。注意,这个有1行2列但你要求4行,第一列。因此错误,“ 指数在位置1超出数组边界 ”。
这种错误也会出现在第二个条件, 数据{1,3} 由于没有一个细胞元素包含3行。而不是猜测你的意图是什么,我可以帮助你如果你描述目标。
18岁的评论

登录置评。

更多的答案(0)

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的