2

这是我的代码:

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 Learning\Tutorials\ex3\oneVsA ll.m 第 57 行[6],第 3 列[if 语句之前的方式]

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

我在代码指示我提供的代码中的错误的地方加粗。

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

任何帮助将不胜感激。

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

4

1 回答 1

2

我认为您的索引超出了矩阵维度。

具体在以下行中:

y(c)-y(c+1)

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

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

c<m
于 2012-10-01T07:35:27.597 回答