テストマネージャーのベースラインテストにおいて、シミュレーションデータとベースラインデータが一致しないのは、なぜですか?
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 30 Août 2024
Modifié(e) : MathWorks Support Team
le 11 Sep 2024
ベースラインテストケースは、Excelで作成しています。時間データは、”0.01”刻みでオートインクリメントさせて作成しています。
テストマネージャーのベースラインテストにおいて、シミュレーションデータとベースラインデータが一致しません。
Réponse acceptée
MathWorks Support Team
le 11 Sep 2024
Modifié(e) : MathWorks Support Team
le 11 Sep 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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Inputs dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!