matlab中关于使用length导致的不稳定状况。 - 面朝终南山

matlab中关于使用length导致的不稳定状况。

matlab length在使用过程中存在的不稳定的状况。

前几天在做一个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函数,很轻松就搞定了,而且像这种不稳定的情况也会很少发生。

^.^