Signal builder の波形信号とシミュレーション後の Scope の波形信号が異なるのはなぜですか?

5 ビュー (過去 30 日間)
MathWorks Support Team
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
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 件)

カテゴリ

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

タグ

タグが未入力です。

製品


リリース

R2010a

Community Treasure Hunt

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

Start Hunting!