1

我的问题是找到一种方法来减少 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

这不是一个非常具体的问题,因为在许多其他情况下我遇到了指数级跳过更新的问题,有什么问题吗?

4

2 回答 2

3

看起来在您下一次采样加速器之前的计数应该约为sqrt(fabs(500 - accelerometer)) / 3.25.

于 2013-01-25T13:36:11.047 回答
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++;
}

那就是你有一个相当简单、低复杂性和易于调整的功能。希望这可以帮助。

于 2013-01-25T13:29:00.543 回答