MATLAB Unit Test Framework を利用した単体テスト​時の入力データ設定「​setExterna​lInput」のエラ​ーに関して

18 ビュー (過去 30 日間)
T.K
T.K 2025 年 11 月 18 日 10:52
コメント済み: T.K 2025 年 11 月 20 日 0:04
作成したモデルに対して、「matlab.unittest.TestCase」でのテストスクリプト(.m)を作成しています。
モデルは2入力となっているため、以下のようにオブジェクト関数「setExternalInput」にて入力データのセットを行いました。
% 入力1 (Simulink Timeseries形式)
input1 = timeseries(ones(size(time_s)) * Current, time_s, 'Name', 'I1');
input1.DataInfo.Interpolation = tsdata.interpolation('zoh');
% 入力2 (Simulink Timeseries形式 - 最初のみ有効な信号として扱う)
initial_waveform = [Initial_V; zeros(numel(time_s)-1, 1)];
input2 = timeseries(initial_waveform, time_s, 'Name', 'I2');
input2.DataInfo.Interpolation = tsdata.interpolation('zoh');
simIn = Simulink.SimulationInput(testCase.ModelName);
simIn = simIn.setExternalInput({input1, input2});
結果、以下エラーとともに入力データが正しくモデルに入っていないようです。
'Simulink:Logging:InvInputLoadNameList'
[入力] パラメーターを使用して指定する外部入力の数 (1) は、ルートレベルの Inport ブロック、Enable ブロック、およびトリガータイプが関数呼び出し以外の Trigger ブロックの合計数 (2) と一致していなければなりません。
確認したこととしては以下2つになります。
1.モデルのinportブロック名(ブロックの下の名前)とテストケースの各入力信号名(Name)が合っている
※find_system コマンドにて以下を確認
--- Simulink Model Inport Block Details ---
Block Path: ****model/I1
Block Name: I1
Block Port Number: 1
--------------------------
Block Path: ****model/I2
Block Name: I2
Block Port Number: 2
--------------------------
2.テストケースのデバッグ出力では 「simIn.ExternalInput{1×1 timeseries} {1×1 timeseries}」 と表示されていた
<質問>
上記エラーが発生する原因と処置方法がわかればご教示をお願いできますでしょうか。
※Matlab_ver= バージョン 24.2 (R2024b)になります。

採用された回答

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2025 年 11 月 18 日 11:41
simIn.setExternalInput に入力する値がセル配列になっていることがエラーの原因かと思います。
Simulink.SimulationData.Datasetオブジェクトを入力すれば、解決すると思います。
simIn = Simulink.SimulationInput(testCase.ModelName);
ds = Simulink.SimulationData.Dataset();
ds = ds.addElement(input1, 'I1'); % input1, input2は作成したtimeseriesオブジェクト
ds = ds.addElement(input2, 'I2');
simIn = simIn.setExternalInput(ds);
  1 件のコメント
T.K
T.K 2025 年 11 月 20 日 0:04
ご指摘の対応でエラーなく動作致しました。
※型の理解が不十分でした。
大変ありがとうございました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!