C语言均方根法计算交流电压有效值

#include "stdio.h"
#include "stdlib.h"
#include "stdint.h"
#include "string.h"

#include "math.h"

// #define SAMPLE 1000

#define PI acos(-1)

int main(int argc, char *argv[])
{
    float sum = 0;
    float rms = 0;
    
    int SAMPLE = atoi(argv[1]);
    
    if(argc != 2)
        SAMPLE = 100;
    
    for(int x = 0; x < SAMPLE; x++) 
    {
        //AC200V-50Hz
        float y = 220 * sqrt(2) * sin(x * PI / 10);     //20ms
        sum += pow(y, 2); //平方和
    }
    
    //求平均
    sum = sum / SAMPLE;
    //开根号
    rms = sqrt(sum);
    
    printf("sample = %d, rms = %.9f\r\n", SAMPLE, rms);
    
    return 0;
}

运行结果:

$ ./a.exe 5
sample = 5, rms = 196.773986816

$ ./a.exe 10
sample = 10, rms = 220.000015259

$ ./a.exe 15
sample = 15, rms = 212.540191650

$ ./a.exe 20
sample = 20, rms = 220.000015259

$ ./a.exe 30
sample = 30, rms = 220.000000000

$ ./a.exe 50
sample = 50, rms = 220.00000000

你可能感兴趣的:(c语言,开发语言,FPGA,HLS)