このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では,MATLAB®時系列データを数据集
形式に変換する方法を示します。myvdp_timeseries
は,MATLAB時系列の形式でデータのログを作成するvdp
モデルで,simoutおよびsimout1用に構成された2つの到工作空间ブロックを使用します。到工作空间ブロックを使用してMATLAB時系列の形式でデータのログを作成するモデルでは,次のような手順を使用することを検討してください。
金宝appSimulink.SimulationData.Dataset
コンストラクターを使用してMATLAB時系列データを数据集
形式に変換してから,2つのデータセットを連結します。
図に示すように,vdp
モデルに到工作空间ブロックを2つ追加します。
両方のブロックの[保存形式]パラメーターを設定します。[時系列]
に設定します。
モデルをmyvdp_timeseries
という名前で保存します。
モデルのシミュレーションを実行します。
到工作空间ブロックを使用してデータのログが作成されます。
信号ログ形式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添加或修改元素。方法,父类
両方の到工作空间ブロックのMATLAB時系列データを数据集
に変換します。
ds = 金宝appSimulink.SimulationData.Dataset (simout);ds1 = 金宝appSimulink.SimulationData.Dataset (simout1);
dsは1つ目の到工作空间ブロックのデータの変数名で,ds1は2つ目の到工作空间ブロックのデータの変数名です。
両方のデータセットを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つの到工作空间ブロックを使用します。
到工作空间ブロックを使用して構造体の形式でデータのログを作成するモデルでは,次のような手順を使用して数据集
形式に変換することを検討してください。
図に示すように,vdp
モデルに到工作空间ブロックを2つ追加します。
両方のブロックの[保存形式]パラメーターで構造体
を選択します。
2つの到工作空间ブロックに対する2つの入力信号をDs
形式でログに記録するように信号のログを有効にします。
モデルをmyvdp_structure
という名前で保存します。
モデルのシミュレーションを実行します。
到工作空间ブロックを使用してデータのログが作成されます。
両方の到工作空间ブロックの構造体データを数据集
に変換します。
ds = 金宝appSimulink.SimulationData.Dataset (simout);ds1 = 金宝appSimulink.SimulationData.Dataset (simout1);
simoutは1つ目の到工作空间ブロックのデータの変数名で,simout1は2つ目の到工作空间ブロックのデータの変数名です。
時間なしの構造体または配列の変換では,時間はt = 0で始まり,1ずつインクリメントします。
dsの最初の要素の値を取得します。
ds.get (1) .Values.Time
Ans = 0 1 2 3…61 62 63
信号ログから最初の要素の時間値を取得します。
logsout.get (1) .Values.Time
Ans = 0 0.0001 0.0006 0.0031…19.2802 19.6802 20.0000
次の間でタイムスタンプが異なることを確認します。
数据集
形式に変換した時間なしの構造体のログデータ
数据集
形式のログデータ
既定の数据集
信号ログ形式を使用する場合,金宝app仿真软件®はログデータを金宝appSimulink.SimulationData.Dataset
オブジェクトに保存します。オブジェクトから信号データを抽出する方法の詳細については,
リファレンスページを参照してください。金宝appSimulink.SimulationData.Dataset
金宝appSimulink.SimulationData.Dataset
オブジェクトにはそれぞれのログ信号の
オブジェクトが含まれています。金宝appSimulink.SimulationData.Signal
バス信号の場合,金宝appSimulink.SimulationData.Signal
オブジェクトにはMATLAB
オブジェクトの構造体が含まれています。timeseries
金宝appSimulink.SimulationData.Dataset
クラスは,信号ログデータとその関連情報にアクセスするための2つのメソッドを提供します。
名前 |
説明 |
---|---|
|
インデックス,名前,またはブロックパスに基づいて,データセットから要素または要素のコレクションを取得します。 |
データセット内の要素の数を取得します。 |
[データセット]
形式を使用する信号ログデータにアクセスする例については,
を参照してください。金宝appSimulink.SimulationData.Dataset
バス信号の配列ログデータは,[データセット]
信号ログ形式を使用しています。
バス配列に含まれる特定の信号のデータにアクセスするための一般的な方法は次のとおりです。
金宝appSimulink.SimulationData.Dataset.get
(またはgetElement
)メソッドを使用して,ログデータ(既定の設定では変数logsout
)内の特定の信号にアクセスします。
値を取得するために,バス配列内のインデックスを指定します。
再度インデックスを指定して,特定のバスのデータを取得します。
たとえば,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
メソッドを使用するスクリプトを作成します。
(信号プロパティ]ダイアログボックスを使用して異なる名前を指定します。重複する名前の信号がノーマルモードで参照モデルの複数のインスタンスには表示されない場合,以下の方法を使用することを検討してください。
モデルで信号を右クリックします。
コンテキストメニューで[プロパティ]を選択します。
(信号プロパティ]ダイアログボックスで,[ログ名)を[カスタム]
に設定して信号名とは異なる名前を指定します。
モデルをシミュレーションして,名前引数付きで金宝appSimulink.SimulationData.Dataset.getElement
メソッドを使用します。
ヒント
信号ログセレクターを使用して特定の信号にアクセスすることもできます。詳細については,信号ログセレクターによる信号ログ設定のオーバーライドを参照してください。
[データセット]
形式を使用する信号ログデータでログ名の改行文字を取り扱うために,getElement
呼び出し内でsprintf
コマンドを使用します。次に例を示します。
topOut.getElement (sprintf (“增量\ nBUS”))
金宝appSimulink.SimulationData.Dataset