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

18 ビュー (過去 30 日間)
kinom
kinom 2022 年 3 月 25 日
編集済み: Atsushi Ueno 2022 年 3 月 28 日
特定のラインに伝搬ラベルが存在しているかどうかを確認する方法はありますか。

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 3 月 25 日
編集済み: Atsushi Ueno 2022 年 3 月 28 日
>特定のラインに伝搬ラベルが存在しているかどうかを確認する方法はありますか。
上記リンク先の"代替"方法「ライン(信号線)をクリックしてラベルを"<"に変更する」が最も手数が少なく便利です。
(追記) ラインの信号源となるブロックのプロパティ 'PropagatedSignals' を参照する事で特定のラインに伝搬ラベルが存在しているかどうかをプログラム的に確認できます。(詳細はコメント参照)
  2 件のコメント
kinom
kinom 2022 年 3 月 27 日
すみません、やりたいことを正確に伝えられていませんでした。
スクリプトを使い、一番上の階層の出力ラインに対し 伝搬ラベルが存在する場合には何もせず、 伝搬ラベルが存在しない場合にはラベルを付与する、というようなことをしたいのです。
Atsushi Ueno
Atsushi Ueno 2022 年 3 月 28 日
編集済み: Atsushi Ueno 2022 年 3 月 28 日
伝搬ラベルを表示し目視で確認するのではなく、プログラム的に伝搬ラベルの有無を確認したいという意図を理解しました。質問の回答は「信号源のオブジェクトプロパティ '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

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

その他の回答 (0 件)

タグ

製品


リリース

R2015b

Community Treasure Hunt

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

Start Hunting!