主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

数据集形式へのログデータの変換

データセットへのワークスペースデータの変換

この例では,MATLAB®時系列データを数据集形式に変換する方法を示します。myvdp_timeseriesは,MATLAB時系列の形式でデータのログを作成するvdpモデルで,simoutおよびsimout1用に構成された2つの到工作空间ブロックを使用します。到工作空间ブロックを使用してMATLAB時系列の形式でデータのログを作成するモデルでは,次のような手順を使用することを検討してください。

金宝appSimulink.SimulationData.Datasetコンストラクターを使用してMATLAB時系列データを数据集形式に変換してから,2つのデータセットを連結します。

  1. 図に示すように,vdpモデルに到工作空间ブロックを2つ追加します。

  2. 両方のブロックの[保存形式]パラメーターを設定します。[時系列]に設定します。

  3. モデルをmyvdp_timeseriesという名前で保存します。

  4. モデルのシミュレーションを実行します。

    到工作空间ブロックを使用してデータのログが作成されます。

  5. 信号ログ形式logsoutにアクセスします。

    logsout
    Simulink. 金宝appsimulationdata . dataset Package: Simulink. log out = Simulink. Simulink。SimulationData特征:Name: 'logsout' Total Elements: 2 Elements: 1: 'x1' 2: 'x2' -使用get或getElement通过索引或名称访问元素。-使用addElement或setElement添加或修改元素。方法,父类
  6. 両方の到工作空间ブロックのMATLAB時系列データを数据集に変換します。

    ds = 金宝appSimulink.SimulationData.Dataset (simout);ds1 = 金宝appSimulink.SimulationData.Dataset (simout1);

    dsは1つ目の到工作空间ブロックのデータの変数名で,ds1は2つ目の到工作空间ブロックのデータの変数名です。

  7. 両方のデータセットをdsfinalに連結します。dsfinalの形式がlogsoutの形式と一致していることを確認します。

    dsfinal = ds.concat (ds1)
    Simulink. 金宝appdsfinal = Simulink. simulationdata . dataset Package:SimulationData特征:Name: 'simout' Total Elements: 2 Elements: 1: 'x1' 2: 'x2' -使用get或getElement通过索引或名称访问元素。-使用addElement或setElement添加或修改元素。方法,父类

時間なしの構造体のデータセットへの変換

この例では,時間なしの構造体のデータを数据集形式に変換する方法を示します。myvdp_structureは,次に示すように,構造体の形式でデータのログを作成するvdpモデルで,simoutおよびsimout1用に構成された2つの到工作空间ブロックを使用します。

到工作空间ブロックを使用して構造体の形式でデータのログを作成するモデルでは,次のような手順を使用して数据集形式に変換することを検討してください。

  1. 図に示すように,vdpモデルに到工作空间ブロックを2つ追加します。

  2. 両方のブロックの[保存形式]パラメーターで構造体を選択します。

  3. 2つの到工作空间ブロックに対する2つの入力信号をDs形式でログに記録するように信号のログを有効にします。

  4. モデルをmyvdp_structureという名前で保存します。

  5. モデルのシミュレーションを実行します。

    到工作空间ブロックを使用してデータのログが作成されます。

  6. 両方の到工作空间ブロックの構造体データを数据集に変換します。

    ds = 金宝appSimulink.SimulationData.Dataset (simout);ds1 = 金宝appSimulink.SimulationData.Dataset (simout1);

    simoutは1つ目の到工作空间ブロックのデータの変数名で,simout1は2つ目の到工作空间ブロックのデータの変数名です。

    時間なしの構造体または配列の変換では,時間はt = 0で始まり,1ずつインクリメントします。

  7. dsの最初の要素の値を取得します。

    ds.get (1) .Values.Time
    Ans = 0 1 2 3…61 62 63
  8. 信号ログから最初の要素の時間値を取得します。

    logsout.get (1) .Values.Time
    Ans = 0 0.0001 0.0006 0.0031…19.2802 19.6802 20.0000
  9. 次の間でタイムスタンプが異なることを確認します。

    • 数据集形式に変換した時間なしの構造体のログデータ

    • 数据集形式のログデータ

数据集形式のログデータへのプログラムによるアクセス

既定の数据集信号ログ形式を使用する場合,金宝app仿真软件®はログデータを金宝appSimulink.SimulationData.Datasetオブジェクトに保存します。オブジェクトから信号データを抽出する方法の詳細については,金宝appSimulink.SimulationData.Datasetリファレンスページを参照してください。

金宝appSimulink.SimulationData.Datasetオブジェクトにはそれぞれのログ信号の金宝appSimulink.SimulationData.Signalオブジェクトが含まれています。

バス信号の場合,金宝appSimulink.SimulationData.SignalオブジェクトにはMATLABtimeseriesオブジェクトの構造体が含まれています。

金宝appSimulink.SimulationData.Datasetクラスは,信号ログデータとその関連情報にアクセスするための2つのメソッドを提供します。

名前

説明

得到

getElementメソッドも使用できます。このメソッドの構文と動作は,得到メソッドと同じです。

インデックス,名前,またはブロックパスに基づいて,データセットから要素または要素のコレクションを取得します。

numElements

データセット内の要素の数を取得します。

[データセット]形式を使用する信号ログデータにアクセスする例については,金宝appSimulink.SimulationData.Datasetを参照してください。

バス配列の信号ログデータへのアクセス

バス信号の配列ログデータは,[データセット]信号ログ形式を使用しています。

バス配列に含まれる特定の信号のデータにアクセスするための一般的な方法は次のとおりです。

  1. 金宝appSimulink.SimulationData.Dataset.get(またはgetElement)メソッドを使用して,ログデータ(既定の設定では変数logsout)内の特定の信号にアクセスします。

  2. 値を取得するために,バス配列内のインデックスを指定します。

  3. 再度インデックスを指定して,特定のバスのデータを取得します。

たとえば,ex_log_nested_aobモデル内のConstant6ブロックの信号ログデータを取得するには,终结者ブロックに接続するtopBus信号の場合,次のように入力します。

logsout.getElement (topBus) .Values.a .firstConst.data (2, 2)

バス配列の信号ログデータにアクセスするその他の例を以下に示します。バス配列のデータのログを作成する方法を示すその他の例は,sldemo_mdlref_busを参照してください。

シンプルなバス配列

バスでのバス配列

バスの入れ子配列

重複する名前による信号のデータへのアクセス

同じ信号名の複数の信号のあるモデルの場合,信号ログデータには重複した名前のある信号ごとに金宝appSimulink.SimulationData.Signalオブジェクトが含まれます。

重複した名前のある特定の信号にアクセスするには,以下の方法のうちの“1つ”を使用します。

  • 特定の信号に対するデータを見つけ出すために,金宝appSimulink.SimulationData.Signalオブジェクトの表示された出力を視覚的に検証します。

  • 信号のソースブロックに対するブロックパスを指定して金宝appSimulink.SimulationData.Dataset.getElementメソッドを使用します。

  • 重複した信号名で信号全体を反復するには,インデックス引数付きで金宝appSimulink.SimulationData.Dataset.getElementメソッドを使用するスクリプトを作成します。

  • (信号プロパティ]ダイアログボックスを使用して異なる名前を指定します。重複する名前の信号がノーマルモードで参照モデルの複数のインスタンスには表示されない場合,以下の方法を使用することを検討してください。

    1. モデルで信号を右クリックします。

    2. コンテキストメニューで[プロパティ]を選択します。

    3. (信号プロパティ]ダイアログボックスで,[ログ名)[カスタム]に設定して信号名とは異なる名前を指定します。

    4. モデルをシミュレーションして,名前引数付きで金宝appSimulink.SimulationData.Dataset.getElementメソッドを使用します。

ヒント

信号ログセレクターを使用して特定の信号にアクセスすることもできます。詳細については,信号ログセレクターによる信号ログ設定のオーバーライドを参照してください。

信号ログデータでの改行文字の取り扱い

[データセット]形式を使用する信号ログデータでログ名の改行文字を取り扱うために,getElement呼び出し内でsprintfコマンドを使用します。次に例を示します。

topOut.getElement (sprintf (“增量\ nBUS”))

参考

関連するトピック