ラインの伝搬ラベルの存在確認

16 views (last 30 days)
kinom
kinom on 25 Mar 2022
Edited: Atsushi Ueno on 28 Mar 2022
特定のラインに伝搬ラベルが存在しているかどうかを確認する方法はありますか。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 25 Mar 2022
Edited: Atsushi Ueno on 28 Mar 2022
>特定のラインに伝搬ラベルが存在しているかどうかを確認する方法はありますか。
上記リンク先の"代替"方法「ライン(信号線)をクリックしてラベルを"<"に変更する」が最も手数が少なく便利です。
(追記) ラインの信号源となるブロックのプロパティ 'PropagatedSignals' を参照する事で特定のラインに伝搬ラベルが存在しているかどうかをプログラム的に確認できます。(詳細はコメント参照)
  2 Comments
kinom
kinom on 27 Mar 2022
すみません、やりたいことを正確に伝えられていませんでした。
スクリプトを使い、一番上の階層の出力ラインに対し 伝搬ラベルが存在する場合には何もせず、 伝搬ラベルが存在しない場合にはラベルを付与する、というようなことをしたいのです。
Atsushi Ueno
Atsushi Ueno on 28 Mar 2022
Edited: Atsushi Ueno on 28 Mar 2022
伝搬ラベルを表示し目視で確認するのではなく、プログラム的に伝搬ラベルの有無を確認したいという意図を理解しました。質問の回答は「信号源のオブジェクトプロパティ 'PropagatedSignals' を参照する事」になります。'PropagatedSignals' はラインのプロパティではなく、ラインの信号源ブロックのプロパティです。
上記リンク先のスクリプトを改造しました。信号のラベルと伝搬ラベルの有無の組み合わせに対して下記の様に対応します。
num = 0;
% モデル最上位層における出力ラインのハンドルを取得
signalLines = find_system(bdroot,'SearchDepth','1','FindAll','on','type','line');
for i = 1:length(signalLines)
srchandle = get(signalLines(i),'SrcPortHandle'); % 出力ラインのソースハンドルを取得
if isempty(get_param(srchandle,'PropagatedSignals')) % 伝搬ラベルが存在しない場合
set_param(signalLines(i), 'Name', ['temp' num2str(num)]); % ラベルを付与する
num = num + 1; % ラベルが重複しない様連番にする
end
end

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2015b

Community Treasure Hunt

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

Start Hunting!