【C++】代码实现:使用平均数法按一定比例从原始数据中取样

一、程序说明:

在数据分析工作中,需要按一定比例从原始数据中取样,这里使用的是平均数法进行取样。即:每隔 X 个取 1个数据。

二、实现代码:

//使用平均数法按一定比例提取原始数据
extern "C" __declspec(dllexport) int PickupData(double* input, long size_input, int ratio, double* output, long &size_output) {

	vector<double> vecIn(input, input + size_input);
	vector<double> vecOut;   //存放按比例抽取的数据
	double tmp_sum(0.0);
	int iStep(100 / ratio);    //隔iStep个取1个(iStep个的平均值)
	long i(0);

	//按比例抽取数据
	for (auto iter = vecIn.begin(); iter != vecIn.end(); iter++)
	{
		if (i < iStep) {
			tmp_sum += (*iter);
			++i;
		}
		else 
		{
			vecOut.push_back(tmp_sum / iStep);
			i = 0;
			tmp_sum = 0.0;
		}
	}

	i = 0;
	for (auto itr = vecOut.cbegin(); itr != vecOut.cend(); itr++)
	{
		output[i] = *itr;
		++i;
	}
	size_output = vecOut.size();
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/kingkee/article/details/94431343