ログ間隔
以下の例では、ログ間隔の指定方法を説明します。Simulink® では、データ ログを指定の間隔に制限します。
モデル例を開く
IterativeCounter
プロジェクトを開きます。プロジェクトの起動時に CounterSystem
モデルが開きます。
openProject("IterativeCounter");
ライン スタイルを更新するには、モデルを更新します。Simulink ツールストリップの [モデル化] タブで [モデルの更新] をクリックします。ライン スタイルを使用してバスを視覚的に識別できます。あるいは、MATLAB® コマンド ウィンドウで次のコマンドを入力します。
mdl = "CounterSystem"; set_param(mdl,SimulationCommand="update")
ログ間隔の設定
ログ データの量を削減するには、データのログを特定のシミュレーション時間間隔に制限します。この例では、2 つの間隔を指定して、Controls
バスの Increment
信号および Reset
信号によってトリガーされる 2 つのシステム イベントのデータのログを作成します。最初の間隔は、最初の Reset イベントを取得します。2 番目の間隔は、Increment イベントが発生して信号が飽和の下限に達した後のシステムの動作を取得します。間隔は、Increment
信号値と Reset
信号値に基づきます。
[ログ間隔] コンフィギュレーション パラメーターを設定するには、Simulink ツールストリップの [モデル化] タブで [モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] タブで、[単一のシミュレーション出力] を選択することで [ログ間隔] パラメーターを有効にします。
[ログ間隔] パラメーター値は、2 列の double の実数行列でなければなりません。行列要素に NaN を使用してはなりません。各列は、間隔の開始時間と終了時間を定義します。間隔は互いに重ならず、正しい順序でなければなりません。この例では、[ログ間隔] を [9,10.5;14.5,30]
に設定します。
あるいは、シミュレーションの構成をモデルとは別に保存するには、目的のモデル設定で Simulink.SimulationInput
オブジェクトを作成します。
simIn = Simulink.SimulationInput(mdl); simIn = setModelParameter(simIn,ReturnWorkspaceOutputs="on", ... LoggingIntervals="[9,10.5;14.5,30]");
モデルのシミュレーションと結果の表示
Simulink.SimulationInput
オブジェクトに保存されている simIn
という名前の構成を使用してモデルをシミュレートします。
out = sim(simIn);
ログ間隔は、すべてのログ手法に適用されるわけではありません。たとえば、シミュレーション データ インスペクターにストリーミングされるデータには、指定されたログ間隔は適用されません。
[ログ間隔] パラメーターは次のようなログ手法に適用されます。
時間、状態、出力のログ
信号のログ
To Workspace ブロックを使用して記録されるデータ
To File ブロックを使用して記録されるデータ
Record ブロックを使用してワークスペースに記録されるデータ
たとえば、信号ログを使用してワークスペースに記録されるデータには、指定されたログ間隔が適用されます。OuterCount
は 2 つの要素をもつ幅の広い信号です。信号ログの一部として取得された OuterCount
のログの値を表示するには、stem
関数を使用します。この関数はデータの内挿設定を無視します。
time = out.get("logsout").get("OuterCount").Values.Time; data = out.get("logsout").get("OuterCount").Values.Data; stem(time,data,":."); xlabel("Simulation Time"); xlim([0 35]); ylabel("OuterCount"); ylim([0 45]);