ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
928310 Топик полностью
йцукен (19.06.2019 18:51, просмотров: 559) ответил Codavr на Хочу код измерения RMS в целых числах, с минимумом используемой памяти. Требуется отслеживать уход сетевого напряжения из допуска. Точность не особо важна.
А в чём проблема? Хранить нужно всего три переменных. Ниже функция для плавучки, но в целых всё то же самое. Если есть гарантия, что постоянная составляющая маленькая, ею можно пренебречь, корень, спасибо SciFi, можно не извлекать, что там остаётся-то? #define N 256 void rms(double x) { static double sum = 0; static double sum_sqr = 0; static int count = 0; sum += x; sum_sqr += x * x; if (++count == N) { sum /= N; sum_sqr /= N; double rms = sqrt(sum_sqr - sum * sum); do_something_with(rms); sum = sum_sqr = 0; count = 0; } }