Simulinkで任​意の繰り返し信号を出​力するにはどうすれば​よいですか?

20 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2018 年 6 月 14 日
編集済み: MathWorks Support Team 2018 年 7 月 3 日
任意の時系列データをSimulinkに読み込み、信号を繰り返し出力(リピート信号)にするにはどうすればよいですか?
from workspaceブロックを使用したところ、「行列データは、実数で double の 2 次元の行列で、2 列以上でなければなりません。1 番目の列は時間の値を含み、残りの列はデータ値を含まなければなりません。行列の値を Inf または NaN にすることはできません。」というエラーが出てしまいました。

採用された回答

MathWorks Support Team
MathWorks Support Team 2018 年 7 月 3 日
編集済み: MathWorks Support Team 2018 年 7 月 3 日
2通りの方法をご案内します。
1.repeating sequenceブロックを使用する方法
Simulinkライセンスに含まれているrepeating sequenceブロックを使用して、時間値と出力値をそれぞれベクトル信号で指定することで対応可能です。repeating sequenceブロックから出力される信号は、連続サンプル時間となります。
離散サンプル時間の信号を出力するには、同様の指定方法でrepeating sequence stairブロックを使用します。
2.from workspaceブロックを使用する方法
from workspaceブロックには周期信号を出力する設定があり、いくつかの追加の設定をすることで対応可能です。
以下のようにMATLAB上で構造体(in)のメンバーにtimeとvaluesをもつ構造体を作成し、timeを空([])にします。
このように指定することで、Simulinkのソルバの刻みに応じた時刻で各時系列データが順送りに読み出されるようになります。
data = sin(linspace(0,pi/2,100));%入力値としてsineの値を定義する
in.time = [];%時間ベクトルを空に設定する
in.signals.values = data';%信号指定
in.signals.dimension = 1;%次元設定
さらに、from workspaceブロックの設定を以下のようにします。
・「データの内挿」のチェックを外します
・最後のデータ後の出力フォームを「周期的に繰り返す」にします
以上の操作により繰り返し信号の設定が可能です。
from workspaceブロックから出力される信号は、離散サンプル時間となります。
上で述べたように、離散サンプル時間の繰り返し信号を生成するにはrepeating sequence stairブロックを使用する方法もあります。
上に示したプログラムを実行したのちに回答欄上部からダウンロードできるサンプルモデルを実行すると、それぞれの手法により連続時間と離散時間の繰り返し信号がscopeに表示されます。サンプルモデルはR2018a以降のバージョンで使用可能です。
それぞれの機能の詳細は
https://jp.mathworks.com/help/simulink/slref/repeatingsequence.html
https://jp.mathworks.com/help/simulink/slref/repeatingsequencestair.html
https://jp.mathworks.com/help/simulink/slref/fromworkspace.html#btm3rww-1

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSources についてさらに検索

製品


リリース

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!