テストマネージャーのベースラインテストにおいて、シミュレーションデータとベースラインデータが一致しないのは、なぜですか?
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 30 Ago 2024
Modificato: MathWorks Support Team
il 11 Set 2024
ベースラインテストケースは、Excelで作成しています。時間データは、”0.01”刻みでオートインクリメントさせて作成しています。
テストマネージャーのベースラインテストにおいて、シミュレーションデータとベースラインデータが一致しません。
Risposta accettata
MathWorks Support Team
il 11 Set 2024
Modificato: MathWorks Support Team
il 11 Set 2024
テストマネージャーでシミュレーションデータとベースラインデータを比較する際、Simulinkの時間とベースラインデータの時間の間に誤差がある場合、比較結果が一致しません。
1) Simulinkの時間は下記計算式になります。
timeVector = timeStep * [startTime:numSteps-1]'
こちらの計算式につきましては、下記ドキュメントページの「時間データの指定」下で説明しております。
https://jp.mathworks.com/help/simulink/ug/load-data-to-root-level-input-ports-1.html
2) インクリメントの形式は、下記のようになります。
timeVector = [startTime:timeStep:endTime]'
時間データの演算方法が異なる為、1)と2)の間に浮動小数点演算誤差が発生します。これが原因で、比較結果が一致しません。
回避方法としては、ベースラインを定義する際、Excelの時間データをSimulink側の時間データに合わせます。
例えば、Excelの時間データを下記計算式を実行したものに置き換える。
例:
MATLAB上でExcelデータをインポート。その時の時間データをTimeDataとする。
スクリプト例:
SampleTime=0.01;
%Simulinkの時間と同じデータを作成
newTimeData = ((0:length(TimeData))*SampleTime)'
%Excelファイル
filename = 'TestPattern.xlsx';
% 時間データを書き込む為、Excelファイルの範囲を指定
range = 'A5:A56';
% ExcelファイルにnewTimeDataを上書きする
writematrix(newTimeData, filename, 'Range', range);
または、Excel上でSimulinkと同じ時間を定義する場合は、
時間列を
=(ROW()-5)*0.01
(※シミュレーションのデータが5行目から始まり、サンプル時間が0.01の場合)
とすることで、Simulinkの時間データと同じ結果になります。
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Inputs in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!