rms c语言 函数,C中任何更快的RMS值计算?
我正在用C编写一个小型8位微控制器的软件.部分代码是读取电流互感器(ZCT)的ADC值,然后计算RMS值.流过ZCT的电流是正弦曲线但可能会失真.我的代码如下:
float adc_value,inst_current;
float acc_load_current; // accumulator = (I1*I1 + I2*I2 + ... + In*In)
double rms_current;
// Calculate the real instantanous value from the ADC reading
inst_current = (adc_value/1024)*2.5; // 10bit ADC,Voltage ref. 2.5V,so formula is: x=(adc/1024)*2.5V
// Update the RMS value with the new instananous value:
// Substract 1 sample from the accumulator (sample size is 512,so divide accumulator by 512 and substract it from the accumulator)
acc_load_current -= (acc_load_current / 512);
inst_current *= inst_current; // square the instantanous current
acc_load_current += inst_current; // Add it to the accumulator
rms_current = (acc_load_current / 512); // Get the mean square value. (sample size is 512)
rms_current = sqrt(rms_current); // Get RMS value
// Now the < rms_current > is the real RMS current
但是,它有许多浮点计算.这给我的小型MCU增加了很大的负担.我发现sqrt()函数在我的编译器中不起作用.
有没有可以运行得更快的代码?
总结
以上是生活随笔为你收集整理的rms c语言 函数,C中任何更快的RMS值计算?的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: linux kernel 最新版本,li
- 下一篇: c语言24点游戏流程图,C语言解24点游