明示的に型指定されな​いSimulink信​号をデフォルト設定的​に型指定したい

18 views (last 30 days)
Atsushi Ueno
Atsushi Ueno on 7 Apr 2022
Commented: Atsushi Ueno on 8 Apr 2022
【前提】
Simulinkブロックの出力データ型は一般的に下記の様な選択肢を持ちます。
'int8'や'uint32'の様な明示的指定の他に「継承:逆伝播で継承」「継承:入力と同じ型」等の指定方法があります。
'Inherit: Inherit via back propagation' | 'Inherit: Same as input' | 'double' | 'single' | 'int8'...
【質問の背景】信号のデータ型設定を単純化した具体例を提示
  • sigAの型:'Inherit: Inherit via back propagation' ⇒ 出力元/入力先共に型指定しない⇒なぜかdouble型になる
  • sigBの型:'Inherit: Inherit via back propagation' ⇒ int32型のsigCと演算するので逆伝播によりint32型になる
  • sigCの型:'int32'⇒明示的に指定したのでint32型になる
本当のsigAの出力ブロックはConstantではなく、型が'Inherit: Inherit via back propagation'固定の隠ぺいされたブロックです。
【質問】誰も明示的に型指定しない信号sigAを任意の型に指定する方法
  • sigAの型を明示的に指定せず、デフォルト設定か何かで任意の型にする方法はありますか?
  • sigAの型がdouble型になりましたが、これは誰が決めたのでしょうか?何かのデフォルト設定?
  • sigB+sigC加算時にsigBの型が決まる様に、sigAの型指定には逆伝播が必須なのでしょうか?
  • 逆伝播による型指定の最もシンプルな方法は何でしょうか?
【具体的な背景】xx通信信号の「信号自体には不要な型」を仕方なく指定する
具体的に困った問題を説明すると、とある××通信受信ブロックの出力信号('Inherit: Inherit via back propagation'固定)をsimulink信号に乗せ、それをそのまま××通信送信ブロックに入力したい(ゲートウェイさせたい)のですが、この間誰も当該simulink信号の型指定をしません。
sigCを加算する様な演算を追加すれば良いのでしょうが、信号の量が多く、型指定の為に不要な演算を追加し管理する必要があるものだろうかと悩んでいます。
そもそも通信ゲートウェイの実装をSimulink信号まで引っ張ってくる必要は無いですが、「通信ゲートウェイブロック」は存在せず送受信ブロックが別々に分かれている為、受信した信号を一旦simulink信号に乗せる必要があります。

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 8 Apr 2022
コンフィギュレーションパラメーターの「数学とデータ型」の「指定不足のデータ型の規定値」を変更することで、doubleかsingleかを選ぶことができます。
任意に指定するのは難しいのですが、例えば「Data Type Conversion Inherited」を使ってみてはいかがでしょうか。
  1 Comment
Atsushi Ueno
Atsushi Ueno on 8 Apr 2022
@Toshinobu Shintai様、ご回答頂きありがとうございます。大変参考になります。
  • コンフィギュレーションパラメータにデフォルト設定があったのですね
  • Data Type Conversion Inheritedは目的が見える形で明示されて良いですね
  • 「”DTConv”の外部端子付」「”sameDT”の型変換処理付」があったのですね

Sign in to comment.

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!