[已答复] sum(vehicle(min:max,5))在循环中似乎导致报错“索引超出数组元素的数目(1)。”

[复制链接]
tryingheart 发表于 2022-5-8 22:46:59
本帖最后由 tryingheart 于 2022-5-8 22:46 编辑

matlab苦手,只是想统计一段时间内的车辆平均瞬时速度,但是在运行到“vt=sum(vehicle(min:max,5));”就不能运行下去。
if和for循环都失败了

t=700;
i=0;
digits(10);
vehicle=table2array(vehicle700);
K=0;
for i=0:289
n(i+1)=length(find(vehicle(:,2)==t+i*10));
K=K+n(i+1)/15;
end
K=K/290;
i=0;
vt=0;
V=[];
j=[];
for i=1:290
j(:,1)=find(vehicle(:,2)==t+(i-1)*10);
max=max(j(:));
min=min(j(:));
vt=sum(vehicle(min:max,5));
V(i)=vt/n(i);
vt=0;
j=[];
end

4 条回复


tryingheart 发表于 2022-5-8 22:47:00
问题出在第二个for循环,第一个是统计密度和车辆数的

20141303 发表于 2022-5-9 09:01:28
仅供参考,因为提供信息有限,程序运行不了且不知道哪处代码报的什么错误,只能大致猜测一下
一、第二次for第一行代码寻找符合条件的索引,这里有可能没有符合的,故而当次循环的j(:,1)为空集,进而vt=sum(vehicle(min:max,5));索引报错
二、因为max=max(j(:));min=min(j(:));变量名和函数名相同,可能引起索引报错等问题
个人估计第一种情况可能性大一些

tryingheart 发表于 2022-5-9 14:15:41
20141303 发表于 2022-5-9 09:01
仅供参考,因为提供信息有限,程序运行不了且不知道哪处代码报的什么错误,只能大致猜测一下
一、第二次for ...

报错的代码是第二个for循环中”vt=sum(vehicle(min:max,5));“,错误是索引超出数组元素的数目(1),已经写在标题了,我也检查过有无空值,或者超出数据范围,但是没有,在循环外可以正常使用,但是在循环里面就不行

tryingheart 发表于 2022-5-9 14:17:12
20141303 发表于 2022-5-9 09:01
仅供参考,因为提供信息有限,程序运行不了且不知道哪处代码报的什么错误,只能大致猜测一下
一、第二次for ...

也就是说,直接运行这个代码,一直到max和min的数据输入都是正常的,都是到sum(vehicle(min:max,5))这里就报错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表