首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Matlab编程技巧:通过脚本获取/修改Simulink模块参数

  • 23-09-22 00:44
  • 3209
  • 6136
blog.csdn.net

在MBD(基于模型的设计)开发中,可能需要反复修改simulink模型。传统的方式是通过在模型中找到相应的模块,然后点进去修改参数。本文介绍一种通过Matlab脚本批量获取Simulink模块参数,并修改参数的方法。

文章目录

  • 1 相关函数
    • 1.1 搜索出符合条件的模块、信号线、端口等
    • 1.2 获取模块指定参数的值
    • 1.3 设置模块指定参数的值
  • 2 常见问题
    • 2.1 参数名称在脚本中对应的字符串是什么
    • 2.2 只想搜索模型顶层的模块怎么办
  • 3 参考资料

1 相关函数

1.1 搜索出符合条件的模块、信号线、端口等

函数Objects = find_system(System,Name,Value)
输入参数1)System——模型名称;2)Name,Value——搜索条件的名称、值,可以输入多组名称、值
返回值1)Objects——符合搜索条件的模块路径的元胞数组

例如,搜索出demo.slx模型中所有的Gain模块
在这里插入图片描述

>> GainCell = find_system('demo','BlockType','Gain') %搜索出demo.slx模型中所有的Gain模块

GainCell =

  2×1 cell 数组

    {'demo/Gain' }
    {'demo/Gain1'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

1.2 获取模块指定参数的值

函数ParamValue = get_param(Object,Parameter)
输入参数1)Object——模块路径,即find_system输出参数;2)Parameter——模块参数
返回值1)ParamValue——模块参数的值

例如,获取demo/Gain模块的输出数据类型

>> OutDataTypeStr = get_param('demo/Gain','OutDataTypeStr')  %获取demo/Gain模块的输出数据类型

OutDataTypeStr =

    'Inherit: Inherit via internal rule'
  • 1
  • 2
  • 3
  • 4
  • 5

1.3 设置模块指定参数的值

函数set_param(Object,ParameterName,Value)
输入参数1)Object——模块路径,即find_system输出参数;2)Parameter——模块参数;3)参数值
返回值无

例如,设置demo/Gain模块的输出数据类型为single

>> set_param('demo/Gain','OutDataTypeStr','single') %设置demo/Gain模块的输出数据类型为single
>> OutDataTypeStr = get_param('demo/Gain','OutDataTypeStr')

OutDataTypeStr =

    'single'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2 常见问题

2.1 参数名称在脚本中对应的字符串是什么

章节1.2的示例中,Gain模块的输出数据类型是’OutDataTypeStr’,这个字符串是从哪里知道的呢?有以下两种途径获得。
1)右键模块Gain——Properties——Block Annotation,可以在左边的列表框中看到该模块的所有属性,找到相应的即可。
模块属性列表
2)双击模块——找到填写相应参数的地方——右键What’s This?——弹出的帮助窗口拉到最下面——Block Parameter右边写的就是了
在这里插入图片描述

2.2 只想搜索模型顶层的模块怎么办

只想搜索出顶层系统的输入端,不想搜索子系统,可以通过find_system的’SearchDepth’参数来控制。
例如,把前文的demo创建子系统,如下图:
在这里插入图片描述
通过给find_system传入’SearchDepth’为1的参数,即可只搜索顶层模块:

>> InportCell = find_system('demo','BlockType','Inport') %搜索所有Inport模块

InportCell =

  4×1 cell 数组

    {'demo/In1'          }
    {'demo/In2'          }
    {'demo/Subsystem/In1'}
    {'demo/Subsystem/In2'}

>> InportCell = find_system('demo','SearchDepth',1,'BlockType','Inport') %只搜索顶层Inport模块

InportCell =

  2×1 cell 数组

    {'demo/In1'}
    {'demo/In2'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3 参考资料

[1]http://iyenn.com/index/link?url=https://ww2.mathworks.cn/help/simulink/slref/find_system.html?s_tid=doc_ta
[2]http://iyenn.com/index/link?url=https://ww2.mathworks.cn/help/simulink/slref/get_param.html?s_tid=doc_ta

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/103943921"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top