Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 放弃距离测量中的失控值_C_Mean_Arduino Ide - Fatal编程技术网

C 放弃距离测量中的失控值

C 放弃距离测量中的失控值,c,mean,arduino-ide,C,Mean,Arduino Ide,我试图从我的HC-SR04超声波传感器获得更好的读数: 我正在使用新的.ping库,因此sonar.ping_cm()可以获取测量的距离(以厘米为单位)。 我的想法是测量X次并计算平均值(mean\u value\u 1)。 下一步是获取所有读数+/-20%的偏差平均值\u 1-->将其踢出-->计算新的平均值并返回-->(返回x距离/新计数;) 我正在将值上载到thing speak,但使用以下代码,我总是以上载的“NAN”结尾:-( 代码如下: float getAverage(int X)

我试图从我的HC-SR04超声波传感器获得更好的读数: 我正在使用新的.ping库,因此
sonar.ping_cm()
可以获取测量的距离(以厘米为单位)。 我的想法是测量
X
次并计算平均值(
mean\u value\u 1
)。 下一步是获取所有读数+/-20%的偏差
平均值\u 1
-->将其踢出-->计算新的平均值并返回-->(
返回x距离/新计数;

我正在将值上载到thing speak,但使用以下代码,我总是以上载的“NAN”结尾:-(

代码如下:

float getAverage(int X) { 
float x_distance = 0,temporary,Mean_Value_1;
int i = 0, first_count = 0, new_count=0, values[]={};

for (i = 0; i < X; i++) {
    x_distance += sonar.ping_cm();
    values[first_count++] = x_distance;
    delay(100);
} 
Mean_Value_1 = x_distance / X;
x_distance = 0;
for (i=0; i<first_count; i++){
  temporary = (Mean_Value_1 - values[i])*100/Mean_Value_1;
  if (temporary < 20 && temporary > -20){
    x_distance += values[i];
    new_count++;
  }
}
return x_distance / new_count;
}
因此,如果我在循环中调用
double distance=getAverage(1000);

之后的一切都不起作用了

检查
新计数的值
。我怀疑你在除以零

return new_count ? x_distance / new_count : -1; /* distance cannot be negative! */

int-values[]={}
?这是如何编译的?在任何情况下,您都有一个零元素数组,因此
values[first_-count++]
具有未定义的行为。请使用
double
而不是
float
return new_count ? x_distance / new_count : -1; /* distance cannot be negative! */