Matlab错误:索引超出矩阵维度(仅查看向量的单个元素)

时间:2012-10-01 07:31:09

标签: matlab matrix octave dimensions

这是我的代码:

m是向量y的长度。

1 c=1; 
2 cMax=1;
3  
4 while c<=m
5
6       if abs((y(c)-y(c+1)))>0.001
7           cMax=cMax+1;
8       end
9
10  c=c+1;
11 end

本质上,向量y是一个带有一组整数的向量,它从最小到最大组织,我试图找出有多少不同的y值。

我正在将y的当前值与y的下一个值进行比较,并保存cMax中有多少更改。

我已经改变了几次if逻辑语句。它一直是:

if y(c)~=y(c+1)

我颠倒了if语句:

if y(c)==y(c+1)
 %do nothing
 ;
else 
 cMax=cMax+1; 

我不确定我做错了什么,但错误信息总是一样的:

  

错误:A(I):索引超出矩阵维度。

     

错误:来自:

     

错误:C:\ Users \ dickweed \ Documents \ Study \ Machine   在第57行学习\ Tutorials \ ex3 \ oneVsA ll.m [6] ,第3栏 [如果声明之前的方式]

     

错误:C:\ Users \ dickweed \ Documents \ Study \ Machine   在第58行学习\ Tutorials \ ex3 \ ex3.m [7] ,第14栏 [在字母c之后]

我用粗体表示代码表示我提供的代码中的错误。

列是古怪的,可能是因为我正在使用的文本编辑器,但我假设实际列的意思是在if语句之前和结束语句之前。

非常感谢任何帮助。

PS。我实际上正在使用Octave和Notepad ++。对于所有意图和目的,语言完全相同,因为Matlab因此我将其标记为Matlab。

1 个答案:

答案 0 :(得分:2)

我认为你的指数超过矩阵维度。

具体如下:

y(c)-y(c+1)

在最后一次迭代中,当c = m时,第二项y(c + 1)尝试访问不存在的元素。

建议:将停止条件更改为:

c<m