主要内容

複数の插值使用Prelookupブロックのマージによるコードの効率性の改善

モデルトランスフォーマーツールを使用すると,モデル化パターンをリファクタリングして,生成コードの効率性を改善できます。モデルトランスフォ,マ,は,Prelookupブロックの出力から単一の Interpolation Using Prelookup ブロックに接続されている同じ入力信号を持つ複数の使用预查找的插值ブロックを特定し,マ,ジします。

モデルトランスフォ,マ,は,使用预查找的插值ブロックの[テ,ブルデ,タ]以外のプロパティが同じ場合に機能します。モデル内の Interpolation Using Prelookup ブロックの数を削減することで、コード内の変数割り当ての数が削減され、生成されたコードの効率性が向上します。モデル トランスフォーマー アプリまたはプログラムのコマンドを使用して、モデルをリファクタリングできます。

モデルトランスフォ,マ,は,次のような複数の使用预查找的插值を置き換えることができます。

  • 同じインデックスおよび小数部パラメーターを持つPrelookupブロックに接続されている同じ入力信号がある

  • 同じ多端口切换ブロックに接続された出力信号がある

  • 同じブレクポントの指定,値,デタ型がある

  • 同じアルゴリズムパラメ,タ,がある

  • 小数部パラメ,タ,に対して同じデ,タ型がある

モデルトランスフォーマーアプリを使用した插值使用Prelookupブロックのマージ

この例では,モデルトランスフォーマーアプリとAPIを使用して冗長な插值使用Prelookupブロックを特定し,モデルをリファクタリングする方法を説明します。

モデルmInterpolationOptimはPrelookupブロックを使用して信号を複数の插值使用Prelookupブロックに入力します。こうした内挿ブロックの出力が多端口切换ブロックに接続されています。

この例では,変換の条件を満たす插值使用Prelookupブロックを特定し,それらを1つの插值使用Prelookupブロックと,多端口切换ブロックに接続された常数ブロックに置き換えます。

  1. モデルmInterpolationOptimを開きます。MATLAB®コマンドラ@ @ンで以下のように入力します。

    目录(fullfile (docroot,“工具箱”“金宝app模型”“例子”) mInterpolationOptim

  2. モデルを作業フォルダ,に保存します。

  3. [アプリ]タブで,[モデルトランスフォ,マ,]をクリックします。

  4. [変換]フォルダ,で,使用预查找块替换插值チェックを選択します。

  5. [この変換で,ラaaplブラリ内の插值- ndブロックをスキップします.]]オプションを選択して,ライブラリにリンクされている插值使用Prelookupブロックが置換されないようにします。

  6. [変換後のモデル名の接頭辞]フィ,ルドで,リファクタリングされたモデルの接頭辞を指定します。

  7. [このチェックを実行]をクリックします。上部の[結果]テ,ブルには,使用预查找的插值ブロックと,それに対応する多端口切换ブロックの端子@ @ンデックスへのハ@ @パ@ @リンクが含まれています。

  8. 変換しないグル,プの(候选人组)の下にあるチェックボックスをオフにします。

  9. [モデルのリファクタリング]をクリックします。[結果]テ,ブルには,新しいモデルへのハ,パ,リンクが含まれています。テ,ブルには,共有使用预查找的插值ブロックと,それに対応する多端口切换ブロック端子へのハ▪▪パ▪▪リンクが含まれています。ツールによって,新しいgen_mInterpolationOptim.slxモデルを含むm2m_mInterpolationOptimフォルダ,も作成されます。

gen_mInterpolationOptim.slxモデルにある2のPrelookupブロックPrelookupおよびPrelookup1が単一の使用预查找的插值ブロックに接続され,常数ブロックは多端口切换ブロック端子に接続されて[テ,ブルデ,タ]を入力として提供します。

プログラムによる使用预查找插值方法ブロックのマ,ジ

モデルトランスフォ,マ,をプログラムによって使用するには,以下のようにします。

  1. モデルを現在の作業ディレクトリに保存します。

    目录(fullfile (docroot,“工具箱”“金宝app模型”“例子”) mInterpolationOptim
  2. 変換の条件を満たす候補を特定するには,関数金宝appSimulink.ModelTransform.CommonSourceInterpolation.identifyCandidatesを使用してオブジェクトtransformResultsを作成します。

    transformResults = 金宝appsimulink . modeltransform . commonsourceinterpolation . identifycandidate (“mInterpolationOptim”
    transformResults =带有属性的结果:候选项:[1×1 struct]

    transformResultsオブジェクトには1のプロパティ候选人があります。これは,InterpolationPortsSwitchPortsの2のフィルドをも構造体です。

    transformResults。候选人= struct with fields: InterpolationPorts: [4×1 struct] SwitchPorts: [4×1 struct]

  3. InterpolationPortsフィ,ルドを表示します。

    transformResults.Candidates.InterpolationPorts =
    4×1带字段的struct数组:块端口

    InterpolationPortsフィルドは2の配列港口で構成されます。同様に,SwitchPortsには同じプロパティがあります。

  4. 候选人。InterpolationPortsフィ,ルドと候选人。SwitchPortsフィ,ルドをテ,ブルに変換します。

    struct2table (transformResults.Candidates.InterpolationPorts) struct2table (transformResults.Candidates.SwitchPorts)
    ans = 4×2表块端口  _____________________________________________ ____ {' mInterpolationOptim /插值↵使用Prelookup '} 0 {' mInterpolationOptim /插值使用Prelookup1↵'}0 {' mInterpolationOptim /插值使用Prelookup2↵'}0 {' mInterpolationOptim /插值使用Prelookup3↵'}0 ans = 4×2表块端口  ______________________________ ____ {' mInterpolationOptim / Multiport_Switch '} 1 {' mInterpolationOptim / Multiport_Switch '} 2 {' mInterpolationOptim / Multiport_Switch '} 3{' mInterpolationOptim / Multiport_Switch '} 4

    SwitchPortsを使用して,どの使用预查找的插值ブロックがどの多端口交换机ブロック端子に接続されているか確認します。

  5. モデルをリファクタリングするには,関数金宝appSimulink.ModelTransform.CommonSourceInterpolation.refactorModelを使用します。この関数は,関数identifyCandidateからのtransformResultsオブジェクトを使用します。

    refactorResults = 金宝appSimulink.ModelTransform.CommonSourceInterpolation.refactorModel(transformResults)
    refactorResults =带有属性的refactorResults: ModelName: 'mInterpolationOptim' ModelDirectory: " TraceabilityInfo: [4×1 containers。地图)

    refactorResultsオブジェクトのModelNameプロパティとModelDirectoryプロパティは参照モデルの名前と場所をリストします。TraceabilityInfoはブロックのトレ,ス情報をリストする容器。地图オブジェクトです。

条件と制限

モデルトランスフォ,マ,は,次の場合は使用预查找的插值ブロックを置換できません。

  • 使用预查找的插值ブロックがコメントアウトされた領域にあるか,非アクティブなバリアントである。

  • 使用预查找的插值ブロックがマスクされている。

  • モデルトランスフォーマーアプリでは,原子サブシステム,参照モデル,またはライブラリにリンクされたブロックの境界を越える使用预查找的插值ブロックの置換は行われません。

関連するトピック