我有一種方法可以從包含訓練數據的文件中計算出間隔。它檢測到峯值和下降的功率來確定時間間隔,我正在開發一種方法來計算每個時間間隔的平均值。這裏是方法:通過for循環累加總數 - 總是總是爲0
public void getIntervalData()
{
//Remove first drop anomaly
drops.Remove(0);
int intervalAltitude;
int intervalPower;
int intervalSpeed;
int altitudeAddUp = 0;
int powerAddUp = 0;
int speedAddUp = 0;
int counter = 0;
//Loop through to get all spikes and drops
for (int j = 0; j < spikes.Count(); j++)
{
int firstNumber = Convert.ToInt32(spikes[j]);
int secondNumber = Convert.ToInt32(drops[j]);
MessageBox.Show(firstNumber.ToString());
counter++;
//Difference to work out averages
int difference = secondNumber - firstNumber;
//Get seperate interval data (first number = spike, second number = drop)
for (int i = firstNumber; i < secondNumber; i++)
{
int altitudeNumber = altitudeList[i];
int powerNumber = powerList[i];
int speedNumber = Convert.ToInt32(speedList[i]);
//Add up data
altitudeAddUp += altitudeNumber;
powerAddUp += powerNumber;
speedAddUp += speedNumber;
}
MessageBox.Show("Alt add up:" + altitudeAddUp.ToString());
intervalAltitude = altitudeAddUp/difference;
intervalPower = powerAddUp/difference;
intervalSpeed = speedAddUp/difference;
intervalAverages.Add(new Tuple<int, int, int>(intervalAltitude, intervalPower, intervalSpeed));
MessageBox.Show("Interval: " + counter.ToString() + ": Avgs: " + intervalAverages[0]);
}
MessageBox.Show("Interval averages added. There were: " + counter + " intervals");
}
altitudeAddUp,powerAddUp和speedAddUp總是0,但我不明白爲什麼它沒有加起來。可能是一個菜鳥錯誤,我只是無法看到它。
我以前用過一個消息框來測試altitudeNumber,powerNumber和speedNumber是否包含數據並且它們是這樣做的,但它不會加起來。
由於它們是整數,所以在這一行有'intervalSpeed = speedAddUp/difference; '或另一個類似的你正在分割並創建一個十進制,它被取整爲0. –
你確定'firstNumber
正如上面的評論所暗示的,如果第二個數字<第一個數字,那麼您將永遠不會輸入第二個用於循環的地方,而您正在使用debuger進行入侵 – cameronjchurch