How to get the order of Simulink blocks based on their pin connection

5 ビュー (過去 30 日間)
Ganesh Hegade
Ganesh Hegade 2017 年 2 月 17 日
コメント済み: Ganesh Hegade 2017 年 2 月 23 日
How to get the order of Simulink blocks based on their pin connection.
For Example: From attached Simulink model (This model has no meaning. created only to give idea about my problem ), I want to get the order of blocks based on pin connection instead of their alphabetic order.
The order should be like (Expected Output):
1. Integrator,Second-Order Limited Block
2. Integrator or Rate Limiter Dynamic Block
3. Rate Limiter Dynamic or Integrator Block
4. Lookup table Dynamic Block
5. Data type Conversion block
6. n-DLookup Table Block
But Currently I am getting order based on Aplhabatic name of Blocks (Refer below image for the results uisng 'find_system' command.)
(Current Output):

回答 (1 件)

Hari Desanur
Hari Desanur 2017 年 2 月 22 日
I don't think you can do this directly but you might be able to use the 'Position' property of a Block to get the desired order of the blocks.
Refer to the 'Position' property in this documentation page - https://www.mathworks.com/help/simulink/slref/common-block-parameters.html
  1 件のコメント
Ganesh Hegade
Ganesh Hegade 2017 年 2 月 23 日
I am already getting order of the Blocks by using their Position. But it doesn't work for all conditions. For example user may place the Blocks in random order. So i am looking for some solution based on Block 'handle' and 'Portconnectivity'. Below is the current solution used by me.
open_system('SystemName');
caBlocks = find_system(gcs,'SearchDepth',1,'Type','Block');
caPositions = get_param(caBlocks,'Position');
nLeftPos = cellfun(@(c)c(1),caPositions);
[~,nOrderIdx] = sort(nLeftPos);
blocks(nOrderIdx)

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by