计算标准偏差返回多个数据
Calculating standard deviation returning more than one data
我正在尝试计算 wifi rssi 值的标准偏差。我扫描数据 30 秒,然后像这样计算它的标准偏差:
for (int length = 0; length < resultsData.size(); length++) {
double sum = 0;
double sd = 0;
for (int l = 0; l < resultsData.get(length).values.size(); l++) {
sum += resultsData.get(length).values.get(l);
}
double average = sum / resultsData.get(length).values.size();
sd += (Math.pow((sum-average), 2));
double SD = Math.sqrt(sd/resultsData.get(length).values.size()-1);
positionData.addValue(resultsData.get(length).getRouter(), average);
Log.v("SD", String.valueOf(SD));
}
为什么结果不止一个?这是日志
V/SD: 178.67550857247704
180.76127985287263
258.6297016598155
342.92879445720627
351.79322190907664
258.45588877709247
358.5719004995616
369.1744470855485
313.72831287322157
371.78163032237256
V/SD: 273.05616515593147
216.67267940374947
288.8982519850198
你好像在问为什么不止一次打印到日志?如果是这样,我会认为这是因为
Log.v("SD", String.valueOf(SD));
位于第一个 for loop
的 内部 。如果您希望所有内容都完成 运行ning,然后 运行 最后一次记录日志语句,请将其移到 for loop
之外。希望这对您有所帮助!
我正在尝试计算 wifi rssi 值的标准偏差。我扫描数据 30 秒,然后像这样计算它的标准偏差:
for (int length = 0; length < resultsData.size(); length++) {
double sum = 0;
double sd = 0;
for (int l = 0; l < resultsData.get(length).values.size(); l++) {
sum += resultsData.get(length).values.get(l);
}
double average = sum / resultsData.get(length).values.size();
sd += (Math.pow((sum-average), 2));
double SD = Math.sqrt(sd/resultsData.get(length).values.size()-1);
positionData.addValue(resultsData.get(length).getRouter(), average);
Log.v("SD", String.valueOf(SD));
}
为什么结果不止一个?这是日志
V/SD: 178.67550857247704
180.76127985287263
258.6297016598155
342.92879445720627
351.79322190907664
258.45588877709247
358.5719004995616
369.1744470855485
313.72831287322157
371.78163032237256
V/SD: 273.05616515593147
216.67267940374947
288.8982519850198
你好像在问为什么不止一次打印到日志?如果是这样,我会认为这是因为
Log.v("SD", String.valueOf(SD));
位于第一个 for loop
的 内部 。如果您希望所有内容都完成 运行ning,然后 运行 最后一次记录日志语句,请将其移到 for loop
之外。希望这对您有所帮助!