[发明专利]一种Simulink的自动布局方法有效
申请号: | 201910383814.0 | 申请日: | 2019-05-08 |
公开(公告)号: | CN110298062B | 公开(公告)日: | 2022-09-20 |
发明(设计)人: | 陈浩;赵瑞永;黄晓;郭悦 | 申请(专利权)人: | 北京灵思创奇科技有限公司 |
主分类号: | G06F30/3308 | 分类号: | G06F30/3308;G06F30/392 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100000 北京市昌平*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 simulink 自动 布局 方法 | ||
1.一种Simulink的自动布局方法,其特征在于,包括以下步骤:
S1:获取模型所有关于布局的信息,包括模块的信息和模块之间的树形层次关系;
S2:整理子系统模块下面的标签类型模块; 如果有局部标签模块,就删除局部标签模块,用连线连接;如果有非局部标签模块,就先遍历整个模型的模块树,找到所有相同名字的非局部标签模块(Scoped或者Global类型),然后按读写类型分两组;写类型只有一个,读类型可以为多个;写类型模块命名为A,在读类型组中遍历,取当前的读类型模块命名为B;另外创建图的数据结构保存从一个写类型模块到若干个读类型模块的连接信息;
S3:整理模块的输入和输出数据; 把输入数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据; 把输出数据中所有维度为1,且数据类型相同的数据整合成一个多维的输入数据;
S4:从顶层的根模块开始遍历处理所有的模块和子模块;
S5:在处理每个模块的时候,把模块的信息转成Graphviz的输入,然后调用Graphviz的算法得到自动布局的结果,然后设置模块的布局信息,包括模块位置、高度、宽度等;
S6:本方法通过MATLAB提供的接口添加到Simulink的模型编辑菜单里,用户在使用Simulink的时候右键弹出菜单,选择并使用本方法;
S7:本方法在使用的时候,先弹出对话框,或者提供配置文件,让用户选择设置布局的一些基础信息,比如字体、字体大小、布局间隔等。
2.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S1中模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型和输出的个数。
3.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S2处理标签模块连接步骤为:
步骤一:开始连接两个模块A和B;
步骤二:如果两个模块在同一个子系统模块里,则删除标签模块,用连线连接,退出循环,取下一个读类型模块命名为B,重新开始步骤一,直到遍历结束;
步骤三:遍历整个模型的模块树,确定两个模块的层次; 根模块的层次为0,根模块的子模块的层次为1,依次递增; 并获取两个模块所有的父模块队列; 父模块队列的第一个是根模块;
步骤四:获取模块B可达的父模块C:在B模块的父模块队列中逆序遍历,如果模块已经在图里,则找到合适的父模块C,退出遍历;如果模块在A模块的父模块队列中,则找到合适的父模块C,退出遍历; 一直遍历到根模块为止; 根模块是所有模块的父模块;
步骤五:从模块A到模块C,创建输入输出模块并连接起来;从模块B到模块C,创建输入输出模块并连接起来; 最后在模块C处,把输入输出模块通过连线连接起来,并保存在图里。
4.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S5中模块的信息包括位置、高度、宽度、模块的显示文本、输入的数据类型、输入个数、输出的数据类型和输出的个数。
5.根据权利要求1所述的一种Simulink的自动布局方法,其特征在于,所述S6具体是创建Matlab脚本文件sl_customization.m,把自定义的菜单项添加到Simulink的模型编辑菜单里; 当用户启动Simulink时,右键显示自定义的菜单; 当用户点击自定义菜单项时,可以执行用户预定义的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京灵思创奇科技有限公司,未经北京灵思创奇科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910383814.0/1.html,转载请声明来源钻瓜专利网。