我的问题是找到一种减少updateAccelerometer调用次数的方法。
int count = 0;
int accelerometer = updateAccelerometer();
while (accelerometer <= 500) {
printf("Actual: %lf", accelerometer);
accelerometer = updateAccelerometer();
count++;
}
给出了:
Actual: 9
Actual: 28
Actual: 47
Actual: 65
Actual: 84
Actual: 103
Actual: 122
Actual: 141
Actual: 159
Actual: 178
Actual: 197
Actual: 216
Actual: 235
Actual: 253
Actual: 272
Actual: 291
Actual: 310
Actual: 329
Actual: 347
Actual: 366
Actual: 385
Actual: 404
Actual: 423
Actual: 442
Actual: 460
Actual: 479
Actual: 498
现在我的问题是我不想每次更新加速度计,而是以指数比例比例。如果我引入“线性比例”
我会这样做:
if (count % 2 = 0) accelerometer = updateAccelerometer();
这意味着,一个值将被读取,一个值将不会被等等,因为每次我调用updateAccelerometer它可能需要时间,我想在我远处时采用更少的值并且当我更有价值时近。
所以我的想法是有一个指数函数,只返回标有x的那个,不是因为我不打印其他的,而是因为我不更新加速度计
Actual: 9
Actual: 28
Actual: 47
Actual: 65
Actual: 84
Actual: 103x
Actual: 122
Actual: 141
Actual: 159
Actual: 178
Actual: 197
Actual: 216
Actual: 235x
Actual: 253
Actual: 272
Actual: 291
Actual: 310
Actual: 329x
Actual: 347
Actual: 366
Actual: 385
Actual: 404x
Actual: 423
Actual: 442
Actual: 460x
Actual: 479
Actual: 498x
这不是一个非常具体的问题,因为我有这个问题在许多其他情况下以指数方式跳过更新,任何勾号?
答案 0 :(得分:3)
在您下次采样加速器之前看起来的计数数量应该是sqrt(fabs(500 - accelerometer)) / 3.25
。
答案 1 :(得分:0)
有很多方法可以做到!在应该打印数据时设置预定义的迭代索引,用某种数学函数来确定它。
然而,我会选择这样的东西:int count = 0;
int timeToPrint = 5;
int timeSincePrinted = 0;
int minPrintSpan = 2;
int accelerometer = updateAccelerometer();
while (accelerometer <= 500) {
timeSincePrinted++;
if (timeToPrint == timeSincePrinted && timeSincePrinted >= minPrintSpan) {
printf("Actual: %lf and %d", accelerometer, count);
timeSincePrinted=0;
timeToPrint--;
}
accelerometer = updateAccelerometer();
count++;
}
那就是你有一个相当简单,低复杂性和易于调整的功能。希望这会有所帮助。