for (int i = 0; i <= spectrum.Length; i++) { var val = spectrum[i]; if (val > maxValue) { // maxValue が最も大きい周波数成分の値で maxValue = val; // maxIndex がそのインデックス。欲しいのはこっち。 maxIndex = i; } }
ここでのエラーが
IndexOutOfRangeException: Array index is out of range.
で、つまりサイズを超えてfor文回してるから、でした。
for (int i = 0; i < spectrum.Length; i++) { var val = spectrum[i]; if (val > maxValue) { // maxValue が最も大きい周波数成分の値で maxValue = val; // maxIndex がそのインデックス。欲しいのはこっち。 maxIndex = i; } }
1つ分多く回そうとしてspectrum[i]がない、となっていたので、i < spectrum.Length にして、解決。