小编sgt*_*nny的帖子

找出两个最差的值并删除总和

微控制器负责采样 ADC 值(模数转换)。由于这些部分受容差和噪声的影响,因此可以通过删除 4 个最差值来显着提高精度。查找和删除确实需要时间,这并不理想,因为它会增加循环时间。

想象一下 100MHz 的频率,所以软件的每个命令确实需要 10ns 来处理,命令越多,控制器被阻止执行下一组样本的时间就越长

所以我的目标是尽可能快地完成排序过程,我目前使用这个代码,但这只会删除最糟糕的两个!

uint16_t getValue(void){

    adcval[8] = {};
    uint16_t min = 16383 //14bit full
    uint16_t max = 1;    //zero is physically almost impossible!
    uint32_t sum = 0;    //variable for the summing

    for(uint8_t i=0; i<8;i++){
     if(adc[i] > max) max = adc[i];
     if(adc[i] < min) min = adc[i];
     sum=sum+adcval[i];
    }
    uint16_t result = (sum-max-min)/6;   //remove two worst and divide by 6
    return result;
}
Run Code Online (Sandbox Code Playgroud)

现在我想扩展这个函数以删除 8 个样本中的 4 个最差值以获得更高的精度。关于如何做到这一点的任何建议?

此外,构建一个高效的函数来查找偏差最大的值,而不是最高和最低值,这将是很棒的。例如,想象这两个数组

uint16_t adc1[8] {5,6,10,11,11,12,20,22};
uint16_t …
Run Code Online (Sandbox Code Playgroud)

c microcontroller stm32

3
推荐指数
1
解决办法
191
查看次数

2个相同的功能做了不同的事情

我对数据库进行了两次查询,它们的功能相同,但具有其他值.

CODE1:

$sql= "SELECT sum(amount) as Samount, sum(add25) as Sadd25, sum(add50) as Sadd50, sum(deplacement) as Sdeplacement FROM workhours WHERE reportID = '$reportID'";
$sumWorkhoursData=mysqli_query($link,$sql);
unset($sql);
while($sWorhoursInfo=mysqli_fetch_array($sumWorkhoursData)){
$totalWork = $sumWorkhoursInfo['Samount'];
print_r(var_dump($sWorkhoursInfo));
}
Run Code Online (Sandbox Code Playgroud)

var_dump给出NULL 如果$sql手动将其复制到数据库,那么它会获得一个好的结果,即一行.

CODE2:

$sql= "select sum(time) as Stime, sum(amount) as Samount FROM trip WHERE reportID = '$reportID'";
$sumTripData=mysqli_query($link,$sql);
unset($sql);
while ($sTripInfo=mysqli_fetch_array($sumTripData)){
$totalTrip = $sTripInfo['Stime'];
print_r(var_dump($sTripInfo));
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,var_dump给出 array(4) { [0]=> string(2) "20" ["Stime"]=> string(2) "20" [1]=> string(3) "151" ["Samount"]=> string(3) "151" }

这有什么不对?

php sql

1
推荐指数
1
解决办法
48
查看次数

标签 统计

c ×1

microcontroller ×1

php ×1

sql ×1

stm32 ×1