输出是标准差的NaN - C++。

问题描述 投票:0回答:1

在我的客户程序中,我有一个进程,它迭代一个自定义向量,并执行一些计算来计算标准偏差。它将风速从ms转换为kmh,所以它的*3.6要转换。对于我的sigma值,当然还有需要sigma值的标准差,我的输出是NaN,我不明白为什么会这样。

Main.cpp。

float sum;
    float convertedspeed[windlog.size()];
    float sigma;
    float averagespeed;
    //float conversion;
    float sd;
    int nrofel;

    ofstream ofile("testoutput.csv");

    ofile << "WAST, S, \n";

for(int i = 0; i < windlog.size(); i++){

    nrofel = windlog.size();

    convertedspeed[i] = (windlog[i].speed*3.6);

    sum += convertedspeed[i];
    averagespeed = (sum/nrofel);

    sigma += (convertedspeed[i] - averagespeed)*(convertedspeed[i] - averagespeed);

    sd = sqrt(sigma/(nrofel - 1));

我所有的值都是正常的 除了到sigma的时候 所以我想是那里出了问题。可能是什么问题?

c++ standard-deviation
1个回答
2
投票

使用前必须先初始化变量。

严格来说,在这种情况下,你不必初始化以下变量。nrofel, averagespeedsd 因为它们在循环中被分配了一些值,而没有在分配前被读取。

另一方面,您必须在循环中初始化 sumsigma 因为它们的值在赋值前被读取。

© www.soinside.com 2019 - 2024. All rights reserved.