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 at line 57 [6] , column 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 の場合、2 番目の項 y(c+1) は存在しない要素にアクセスしようとします。

提案: 停止条件を次のように変更します。

c<m
于 2012-10-01T07:35:27.597 に答える