我有一种方法可以从包含训练数据的文件中计算出间隔。它检测到峰值和下降的功率来确定时间间隔,我正在开发一种方法来计算每个时间间隔的平均值。这里是方法:通过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