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 CenterFile Exchange에서 Sources에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!