您的位置:首页 > 其它

传感器仿真平台——数据生成模块(三)

2014-08-17 23:26 225 查看
数据生成模块有下面这样一种情况:

对于不同的传感器仿真实验,所使用的数据类型,数据数量不一样。

如实验一是进行最大覆盖率实验,则他需要的数据格式可能是如下所示:

Class Sensor
{
public int x;
public int y;
public double direction; //方向
public double sweep;//扇形大小
}


实验二进行的是信号强度实验,则他可能还需要一个用来作为覆盖物的目标,如下:

Class Target
{
public int x;
public int y;
public double direction; //方向
public double speed;//移动速度
}


如上,实验一需要100个Sensor对象,实验二则需要500个Sensor对象和10个Target对象,

那么,究竟用什么方法才能实现一种通用的数据生成接口呢?

其实,仔细一想,你会发现,数据是给算法用的吧?那和我的框架又有啥关系呢,谁用谁定义呗。



图中有两个接口,

IDataImp为数据生成接口,在框架中需要实现该接口来获得数据,init函数作为初始化数据函数,无论数据是随机生成还是外部导入,都由init来完成。

IIterator为迭代器,这样做的原因是,本人认为做实验总是会把每一个数据都做一遍,所以遍历数据进行实验就够了。对吧?

void DoWork()
{
IIterator iterator;
IDataImp list= new ConcreteDataImp();
iterator = list.getIterator();
while (iterator.MoveNext())
{
Hashtable table = iterator.CurrentItem();
//do something
method.InitData(options,Callback);
method.process(table);
//do something
iterator.Next();
}
}


2014/8/27补:

上面的做法看上去很好,但是实际使用的时候,自我感觉有点作茧自缚。原因有很多,这里就不一一列举了。不过.Net有定义好的迭代器接口可以现成使用。

public interface IDataImp:IEnumerator
{
void init(int count);
object this[int index] { get; set; }
}


最终被我改成了这样,真是越改越简单了。实现IEnumerator接口使数据可以迭代,重载[]实现随机访问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐