在C

时间:2016-07-11 17:40:44

标签: c standard-deviation

我有几个巨大的数据矩阵要处理,1000 x 1000 x 400,000。我通常使用Matlab,我的Matlab脚本需要9个小时来处理一个数据集。所以我试着将它放入C.

问题是,当我计算数据的标准差时,C和Matlab不匹配。它们甚至都不是很接近。

for(std=0;std<Ndat;std++)
  {
    for(j=0;j<MAXPAIR;j++)
      {
        dist=distance(polymer[GoPair[j].a1],polymer[GoPair[j].a2]);

        if(dist<=(GoPair[j].dist+PREFACTOR))
          {
            Stan[j] += ((1-Prob[j])*(1-Prob[j]));;
          }
        else if(dist>(GoPair[j].dist+PREFACTOR))
          {
            Stan[j] += ((0-Prob[j])*(0-Prob[j]));
          }
      }
  }

for(j=0;j<MAXPAIR;j++)
  {
    stnDev[j] = sqrt(Stan[j]/Ndat);
  }

我的想法是Stan[j]应该在每次循环运行时将(1-Prob[j])^2(0-Prob[j])^2添加到该数组位置中已经存在的内容,但它不会返回Matlab为几乎相同的脚本所做的相同值。

你们有没有看到基本的错误,或者知道为什么这对我不起作用?

0 个答案:

没有答案