《设计模式与游戏完美开发》总结

  1. 通过外部设置最大生命力这种写法
  2. 方法的参数做成父类非常的好
  3. 当流程相似的时候赶紧使用模板方法模式
  4. 把别人类,做成自己的静态类成员即可解决顺序问题
  5. 抽象方法本来就是模板,里面再做抽象方法的模板,真是
  6. 一个状态机两个不同人使用
  7. 场景也能做成状态模式
  8. 既是外观又是中介者
  9. 多对多使用桥接模式
  10. 考虑到if,switch都可以重构成策略
  11. 状态模式某个函数用了很多的return,还有哪怕在update里面都没关系,因为进入另外一个状态就不执行update了
  12. 角色属性单独抽离成类,是类的还有成就系统,行动力系统,事件系统,兵营,关卡,角色管理
  13. 游戏循环模式顺序:输入,逻辑,画面
  14. 使用虚方法重载更灵活一点
  15. 抽象类中的this,是子类还是父类看传入的环境,状态模式new一个的状态的话,状态类是会丢失数据的
  16. Update靠return做成分段代码还是很不错的
  17. 代码风格:从上到下,public,protected,private,注释一律右侧打啊,const一律用readyOnly和枚举一样也都要用大写,函数名字长点无所谓表达清楚就行
  18. 一些极限值的处理做成是否可以删除或者增加的这种形式
  19. 工厂方法还要有接口
  20. 当一个孙系统需要和多个子系统沟通时,就把它变成子系统
  21. 参数类都做成了抽象类,其实也很有意义,因为可以避免修改
  22. 属性工厂
  23. 构建流程做成虚函数没有功能就不实现,工厂类生产,组装类组装角色,子弹特效也可用于建造者模式
  24. 属性类也是抽象,武器类的儿子武器属性类,武器属性和角色属性分开
  25. 亨元属性会变的和不会变的做个区分,这个模式自然要用到工厂类
    ,共享的放字典啊
  26. Mathf.Min()规避极限值
  27. 所有兵营做成对象,用字典来管理
  28. 集中管理的好处是逻辑既不重复也不分散
  29. 关卡内容也做成类,责任链模式对boss关卡和普通关卡的应用
  30. 都是以一个逻辑块来做模块化
  31. 事件系统字典存事件和事件的观察者
  32. 备忘录模式保存一个存档也是有优势的,不公开数据就算是一个优势
  33. 角色信息查询对应访问者模式,不用更改两个类,子类带不带数据跟数据唯一性有关,访问一次reset一次
  34. 使用装饰者模式应用的前缀和后缀,可给属性和道具增加多样性,加成的属性做成一个类,交给属性工厂管理
  35. 强化角色也可应用装饰者模式
  36. 俘兵改造成友军用适配器模式但是推荐后期使用,而且前提敌我属性要有共同的父类
  37. 代理模式开启是否优化,资源工厂存放已经加载过的,代理模式新功能是否要执行(加一个bool控制)。适配器是组合生命周期,代理是聚合生命周期
  38. 参数类是非常好的一项设计
  39. 中介类还能减少接口
  40. 除了单例,还有静态类、方法来用
  41. 单例模式少用
  42. 返回接口就是了,没必要把策略的接口又写进去
  43. 策略模式不一定只运用于算法上,还可以是初始化
  44. 函数划分也很重要
  45. 建造模式比模板模式更低耦合
  46. 属性工厂的设置,而且是带ID
  47. 是否懒加载,看资源大小
  48. 设计模式的类有可能有多种职责
  49. 既有角色管理又有兵营管理,访问者就到角色管理那里去,访问到信息又返回给UI
  50. Update中的return, return, return
  51. 命令模式不是越多越好啊
  52. 成就系统和事件分清关系,单个观察者就是一个类,方便写,很强大,缺点也明显,事件多,类也多
  53. 前后缀装饰着还带着buff呢,工厂管理持有装饰的属性
  54. 适配器模式隔离第三方库
  55. 代理模式对想要功能控制,用于测试等,还有加载更友好
  56. 交战双方设置一个中介来管理
  57. 属性工厂
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值