要对齐一段时间内两组时间密度不一样的数据,S组是4000个时间节点,G组是20000多个时间节点,这里展示了三种方法:
1、快速扫描算法,设置时间精度为0.005s,n的初值为0,只要找到S组每个时间节点对应的G组节点,则取出来。算法复杂度N2。这里有个问题是,一旦有一个数据没对齐,后面的数据则无法对齐了。
2、完全扫描模式,N3
3、逐段扫描模式,找到S组每两个时间节点的间距,取间距的一半,以此为一段。每过一段,无论这一段内是否对齐或者对齐了多组数据,都开始下一段。N2
/ 快速扫描模式
//for (int i = 0; i < arrGprimal.size(); i++) //G的时间数据
//{
// if (abs(arrGprimal[i][0] - arrCprimal[n][0]) < 0.005)
// {
// for (int j = 0; j < 8; j++) //输出G的对应数据
// {
// outFileCoarse << arrGprimal[i][j] << ",";
// }
// for (int j = 0; j < 8; j++) //输出S的对应数据
// {
// outFileCoarse << arrCprimal[n][j] << ",";
// }
// outFileCoarse << endl;
// n++;
// }
// if (n >= arrCprimal.size())
// break;
//}
//
// 完全扫描模式
//for (int n = 100; n < arrCprimal.size(); n++)
//{
// for (int i = 0; i < arrGprimal.size(); i++) //G的时间数据
// {
// if (abs(arrGprimal[i][0] - arrCprimal[n][0]) < 0.0041)
// {
// for (int j = 0; j < 8; j++) //输出G的对应数据
// {
// outFileCoarse << arrGprimal[i][j] << ",";
// }
// for (int j = 0; j < 8; j++) //输出S的对应数据
// {
// outFileCoarse << arrCprimal[n][j] << ",";
// }
// outFileCoarse << endl;
// }
// }
//}
// 逐段扫描方式,算法难度N2
for (int i = 0; i < arrGprimal.size(); i++) //G的时间数据
{
if (abs(arrGprimal[i][0] - arrCprimal[n][0]) < 0.0041)
{
for (int j = 0; j < 8; j++) //输出G的对应数据
{
outFileCoarse << arrGprimal[i][j] << ",";
}
for (int j = 0; j < 8; j++) //输出S的对应数据
{
outFileCoarse << arrCprimal[n][j] << ",";
}
outFileCoarse << endl;
}
if ((arrGprimal[i][0] - arrCprimal[n + 1][0]) > -0.015)
n++;
if (n >= (arrCprimal.size()-1))
break;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)