一、程序说明:
在数据分析工作中,需要按一定比例从原始数据中取样,这里使用的是平均数法进行取样。即:每隔 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;
}