![ebbf43c05d9f3a519702aad07f4a2624.png](https://i-blog.csdnimg.cn/blog_migrate/2b20f0817457ba6559977b384a0c6961.jpeg)
若干年以后,由于转行或者不再做技术等原因,你可能已经记不太清楚之前费尽千辛万苦习得的各种技术细节;但是,最终你会发现:依然有很多宝贵的概念留存并沉淀于脑海深处(比如中学课本中的某些物理概念)。
今天来一起了解下:基于模型开发中,一个非常重要的概念---圈复杂度。
1,圈复杂度
simulink官方文档定义如下:
![4e5f32b563fc7b99d200ec6c002dd311.png](https://i-blog.csdnimg.cn/blog_migrate/ee1919992fca47afeedd265a542b2968.jpeg)
读起来,会不会有点懵圈呢?
没关系。后面会逐步进行解释。
首先圈复杂度可以用来衡量单元模型的结构复杂程度。
圈复杂度越高,说明模型越复杂,可测性就越差,那么相对来说也更容易出问题。
如果你设计过相对复杂的逻辑,可能体会更加深刻一些,因为它真的容易出错啊。
因此,这也给我们一些警示:
作为软件架构工程师,需要合理划分软件单元。不能让某个单元过于复杂,以至于难以测试。
作为模型开发者,应该尽量使用更简洁的方式搭建或者表达模型(别忘了美国程序员因无法忍受同事代码不规范而枪杀4名同事的疯狂事迹)。这就需要在软件需求分析方面多下功夫:用心解读软件需求,并弄清楚其内在的逻辑性和关联性。
2,Simulink如何计算圈复杂度?
那么simulink中,圈复杂度是如何计算的呢?
按Fig1 中定义的公式:
其中N代表判定分支节点的个数,