(2024-12-29: 加筆・修正)。
Simulinkで入力データを設定したい場合が多々ある。
目次
信号データを読み込む方法
Simulinkでブロックを使って信号データを読み込む方法(入力データを設定する方法)は以下の五つくらいか:
ブロック | 読み込むもの |
---|---|
From File | MATファイル |
From Spreadsheet | xlsx, csvファイル |
From Workspace | Workspaceのデータ |
Signal Editor | シナリオ(timeseries データ) |
Signal Builder (非推奨) | xlsx, csv, MATファイル |
(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を使うのが楽だと思う。