C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在C中,如何使用向量视图和gsl_stats_mean计算整数向量的均值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的程序操纵整数的STL向量,但有时我需要计算一些统计数据.因此我使用GSL功能.为了避免将STL向量复制到GSL向量中,我创建了一个GSL向量视图,并将其提供给GSL函数,如下面这段代码
#include <iostream>
#include <vector>
#include <gsl/gsl_vector.h>
#include <gsl/gsl_statistics.h>
using namespace std;

int main( int argc,char* argv[] )
{
  vector<int> stl_v;
  for( int i=0; i<5; ++i )
    stl_v.push_BACk( i );

  gsl_vector_int_const_view gsl_v = gsl_vector_int_const_view_array( &stl_v[0],stl_v.size() );

  for( int i=0; i<stl_v.size(); ++i )
    cout << "gsl_v_" << i << "=" << gsl_vector_int_get( &gsl_v.vector,i ) << endl;

  cout << "mean=" << gsl_stats_mean( (double*) gsl_v.vector.data,1,stl_v.size() ) << endl;
}

编译完成后(gcc -lstdc -lgsl -lgslcblas test.cpp),此代码输出

gsl_v_0=0
gsl_v_1=1
gsl_v_2=2
gsl_v_3=3
gsl_v_4=4
mean=5.73266e-310

矢量视图已正确创建,但我不明白为什么均值是错误的(它应该等于10/5 = 2).任何的想法?提前致谢.

解决方法

使用整数统计函数
cout << "mean=" << gsl_stats_int_mean( gsl_v.vector.data,stl_v.size() ) << endl;

请注意gsl_stats_int_mean而不是gsl_stats_mean.

大佬总结

以上是大佬教程为你收集整理的在C中,如何使用向量视图和gsl_stats_mean计算整数向量的均值?全部内容,希望文章能够帮你解决在C中,如何使用向量视图和gsl_stats_mean计算整数向量的均值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。