例如:来自附加的Simulink模型图(此模型没有意义。仅为了解我的问题而创建),我想根据引脚连接而不是字母顺序获取块的顺序。
订单应该像(预期输出):
Integrator,Second-Order Limited Block
积分器或速率限制器动态阻止
速率限制器动态或积分器块
查找表动态阻止
数据类型转换块
n-DLookup表格块
但目前我正在接收基于Aplhabatic名称块的订单(请参阅下图以获取结果uisng'find_system'命令。)
答案 0 :(得分:2)
没有一个功能会自动为您执行此操作 - 您需要自己编写。
看起来您正在根据块位置(从左到右)进行定位。在这种情况下,您需要类似以下内容(使用演示f14
模型):
>> open_system('f14')
>> blocks = find_system(gcs,'SearchDepth',1,'Type','Block');
>> positions = get_param(blocks,'Position');
>> leftPos = cellfun(@(c)c(1),positions);
>> [~,newOrderIdx] = sort(leftPos);
>> blocks(newOrderIdx)
ans =
18×1 cell array
'f14/Pilot'
'f14/u'
'f14/Controller'
'f14/Sum1'
'f14/Dryden Wind…'
'f14/Stick Input'
'f14/Gain'
'f14/Gain1'
'f14/Gain2'
'f14/Actuator…'
'f14/Sum'
'f14/Aircraft…'
'f14/Nz pilot…'
'f14/Gain5'
'f14/Angle of …'
'f14/Pilot G force…'
'f14/Nz Pilot (g)'
'f14/alpha (rad)'