这是我的代码:
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。
答案 0 :(得分:2)
我认为你的指数超过矩阵维度。
具体如下:
y(c)-y(c+1)
在最后一次迭代中,当c = m时,第二项y(c + 1)尝试访问不存在的元素。
建议:将停止条件更改为:
c<m