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


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

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

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

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

  • 相关阅读:
    IP和MAC
    ASCII,Unicode 和 UTF-8
    php(PHP Hypertext Preprocessor)随笔1
    css层叠样式表 (Cascading Style Sheets)初识
    ansible部署
    mysql三种备份方式
    nginx反向代理,负载均衡,动静分离,rewrite地址重写介绍
    Maven安装和配置
    jenkins之Tomcat7+jdk1.7+jenkins
    CentOS 7.0如何安装配置iptables和seLinux以及firewalld
  • 原文地址:https://www.cnblogs.com/william7neral/p/3918220.html
Copyright © 2020-2023  润新知