時間の値と対応する関数を含む 3 つの行列があります。時間の経過とともに合計された関数値が必要です。これが私のデータセットです(データ列は赤でマークされています):
ご覧のとおり、列には異なる時間と関数の値があるため、最初にそれらを補間する必要があります。このモデルを試しましたが、効果はありませんでした:
私の問題を解決するための助けに感謝します
3 つの表形式の関数のそれぞれを新しい時間値のセットで補間し、これらの関数のそれぞれの実行中の合計を計算したいようです (「時間をかけて合計された関数値」が必要であると述べているため)。これを実現するには、2 つの異なるタイプのブロックが必要になると思います。
Lookup Table ブロックを使用すると、さまざまな時点で関数の値を内挿できます。これは、上のモデルに示されている "Interp" ブロックを置き換えます。モデル内のテーブル データを初期化する方法に応じて、いくつかの異なるオプションがあります。
シミュレーション全体で同じデータ セットがある場合は、このデータをブロックのテーブル データプロパティにハードコードするだけです。この場合、Lookup Table ブロック、より一般的なLookup Table (nD) ブロック、またはInterpolation Using Prelookup ブロック( Prelookupブロックと組み合わせて) を使用できます。
シミュレーション中にワークスペースからテーブル データを読み込む場合は、Lookup Table Dynamic ブロックまたはInterpolation Using Prelookup ブロックを、そのSourceプロパティが入力端子を使用するように設定された状態で使用できます。この場合、 (上記のように) From Workspace ブロックを使用してデータを読み込んでから、内挿ブロックが使用するテーブル データを適切にフォーマットする必要があります。
Cumulative Sum ブロックを使用すると、関数が時間の経過とともに作成する値の現在の合計を維持できます。各関数の現在の合計を個別に確認する場合は、各内挿ブロックの出力に 1 つの累積合計ブロックを追加してから、これらのそれぞれをスコープに送信する必要があります。一緒に追加されたすべての関数の現在の合計を確認する場合は、上記のようにSum ブロックを使用して 3 つの信号を追加し、スコープに送信する前にその出力に累積合計ブロックを追加します。
interp ブロックの代わりに Simulink > Lookup tables ライブラリの "Lookup Table Dynamic" ブロックを使用し、xdat (時間 t 列) と ydat (値) をそれぞれ別の変数/定数に分けます。
「from workspace」ブロックを「constant」ブロックに置き換えたいと思うでしょう。
定数ブロックを使用すると、コマンド プロンプトで評価できる任意の値を設定できます。これには、通常の数値 (1、6、100、1e6)、配列 (1:3、1:2:11、ゼロ (23,1)、1 (10,4)*6)、およびワークスペース変数 (simin1、simin2) が含まれます。 )。
一方、「ワークスペースから」ブロックは、変数から実行ごとに 1 つの要素を読み取ります。
実行ごとにすべてのポイントを interp 関数に渡す必要があるようです。(別の言い方をすると、interp ブロックへの「Pts」入力は定数であり、「in」ポート (時間) は実行ごとに変化する唯一の入力です。)