输出为标准偏差的NaN-C ++

时间:2020-05-03 09:31:38

标签: c++ standard-deviation

我的客户程序中有一个过程,该过程迭代自定义向量,并执行一些计算以计算标准偏差。它将风速从m / s转换为km / h,因此将* 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,所以我希望那里出问题了。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

使用前必须初始化变量。

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

另一方面,您必须初始化sumsigma,因为它们的值是在分配前读取的。