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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whik1194

如果对你有帮助,欢迎打赏。谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值