Signal builder の波形信号とシミュレーション後の Scope の波形信号が異なるのはなぜですか?
5 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 10 月 25 日
回答済み: MathWorks Support Team
2013 年 10 月 25 日
固定ステップ(離散)、サンプリング時間 10 ms で、Signal Builder ブロックの出力を Scope ブロックで観測をしています。
Signal Builder の波形信号: 33 秒で 1 と 33.01 秒では 0 なのに対して、シミュレーション後のScopeの波形信号: 33 秒で 1 と 33.02 秒では 0 になっています。
Signal builder の波形信号とシミュレーション後の Scope の波形信号が異なる理由を教えてください、。
採用された回答
MathWorks Support Team
2013 年 10 月 25 日
Simulink シミュレーションステップの刻みは、倍精度浮動小数点の最小分解能が関係しています。サンプル時間が 0.01 の場合、下記方法で Simulink シミュレーションステップの刻みが確認できます。
format long
t_in = 0.01*(1:5000);
t_in(3300:3302)'
ans =
33.000000000000000
33.009999999999998
33.020000000000003
倍精度浮動小数点の最小分解能により、33.01 秒が表現できないため、シミュレーション上では、33.02 秒で 0 になります。
Signal builder の波形信号とシミュレーション後の Scope の波形信号を同じにする為には、SIGNALBUILDER コマンドを使って Signal Builder の時間を Simulink シミュレーションステップに合わせる方法になります。下記プログラム例は、添付モデルの sample_9b.mdl の場合になります。
bdclose all
clear all
open_system('sample_9b')
ModelName='sample_9b'
sigblkN = find_system(ModelName,'Tag','STV Subsys');
sigblkN=sigblkN{1};
[time,data,siglabelsl,grouplabel]=signalbuilder(sigblkN);
C=time;
t_in = 0.01*(0:5000);
newC = interp1(t_in,t_in,C,'nearest');
signalbuilder(sigblkN, 'set','STEERING_R_SW','TEST21', newC, data)
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!