前几天在做一个matlab的程序过程中,程序总是遇到提示所需坐标已经超出范围的提示。很奇怪的问题。
我检查了程序,首先确认这不是一个程序上简单的语法问题导致的。在调一些较大的程序过程中其实麻烦的过程,通过数次单步调试,
最终将程序停在了,报错的前一行,这个过程还是一个花了我快一个小时,囧啊囧啊囧啊。
检查for循环过程中的变量变化,发现原本只有一组返回的数据,在for循环的次数却是2次!!
这是怎么回事,程序确实只返回了一组数据,为什么要返回两次循环,由于数据不存在,必然导致数据超出范围。
google了一下,大家的说法也都千奇百怪,不是很合适我的这个情况。
郁闷了。
主要到刚好我的for循环是这样写得:
for i = 1 : length(zuobiao)
XXXXXXXXXXXXX
XXXXXXXXXXXXXX
end
注意到了,中间没有问题,那问题肯定就出在length()这里。于是看看matlab help中对length的描述。
length
Description :Length of vector or largest array dimension
看到这里就明白了,length返回的是最大的维数。这就是问题。
若矩阵为2*2矩阵,返回2.若矩阵为1*2,返回2.若矩阵为2*1也为2,这样就明显的出现问题了。
这边是不注意,导致的问题。其实如果使用一个size函数,很轻松就搞定了,而且像这种不稳定的情况也会很少发生。
^.^