Simulink での信号データの読み込み

(2024-12-29: 加筆・修正)。

Simulinkで入力データを設定したい場合が多々ある。

信号データを読み込む方法

Simulinkでブロックを使って信号データを読み込む方法(入力データを設定する方法)は以下の五つくらいか:

(Signal Builderは何でも読み込めて便利だが、現時点で非推奨。)

From Workspace

From Workspaceはワークスペース変数をSimulinkから使う。

ワークスペース変数として、timetable, timeseriesのほかに [time, data]のように2次元配列も使える(time、dataは列ベクトル)。

ワークスペース変数にすれば良いので、MATLABに慣れていればデータの生成・確認も楽だと思う。個人的にはこれがおすすめ。

Signal Editor

Signal EditorはCSVやxlsxファイルも読み込めるから、データがあるならこれを使うのも良い。

データがなくて、視覚的に信号を生成したい場合もSignal Editorは良い選択だと思う。

From File

From FileブロックのMATファイルの場合はtimeseriesデータにしておく。

From FileブロックではMATファイルのバージョンを7.3に指定する必要がある。From File

From Spreadsheet

From Spreadsheetのブロックは、timetableデータをwritetableで出力したファイルであれば xlsxでもcsvでも読み込める。

お手軽なのだが、ファイルを読み込む関係上、モデルを開く or シミュレーションが開始されるまで時間を要する。 (以前はこの方法が楽だと感じていたが、今ではほとんど使わない。)

下のコードは、gpsデータのMATファイルからエクセル・CSVファイルに保存しなおす例。 時間が等間隔になるようにretimeを使っている。

load('gpsData.mat');

% retime
gps2 = retime(gps, 'secondly', 'linear');
tbl = table(seconds(gps2.duration), gps2.d, gps2.v, gps2.alt, gps2.ss);

% for Excel file export
excelFile = "gpsData.xlsx";
writetable(tbl, excelFile);

% for CSV file export
csvFile = "gpsData.csv";
writetable(tbl, csvFile);

ブロックを使わない方法

Inportを入力端子として設定してある場合、「コンフィギュレーション パラメーター」で設定できる。

「データのインポート/エクスポート」→ 「ワークスペースから読み込み」の入力に設定する:

%%
t = (0:0.1:20*pi)';
u = sin(t);

どれを使うのが良いの?

個人的には”From Workspace”ブロックか、Signal Editorを使うのが楽だと思う。