我的三种时间对齐方法

        要对齐一段时间内两组时间密度不一样的数据,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;
	}

 

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值