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

数据生成模块有下面这样一种情况:

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

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

1 Class Sensor
2 {
3     public int x;
4     public int y;
5     public double direction; //方向
6     public double sweep;//扇形大小
7 }

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

1 Class Target
2 {
3     public int x;
4     public int y;
5     public double direction; //方向
6     public double speed;//移动速度
7 }

如上,实验一需要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接口使数据可以迭代,重载[]实现随机访问

原文地址:https://www.cnblogs.com/william7neral/p/3918220.html