MATLABとSimulinkの演算違い
17 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
taka
am 16 Feb. 2022
Kommentiert: Atsushi Ueno
am 17 Feb. 2022
MATLAB上で16桁の少数を用いた計算結果とSimulinkで同様の計算をした結果が細かい桁で異なりました。このようは原因は、計算ミス以外になにがあるのでしょうか。また、SimulinkでDisplayブロックを使用して、演算結果をlong型で表示させてみると17桁になる時があります。こちらも疑問です。
0 Kommentare
Akzeptierte Antwort
Hernia Baby
am 16 Feb. 2022
Bearbeitet: Hernia Baby
am 16 Feb. 2022
4 Kommentare
Toshinobu Shintai
am 17 Feb. 2022
Bearbeitet: Toshinobu Shintai
am 17 Feb. 2022
横から失礼します。
とても平たく言いますと、MATLABとSimulinkではコンパイラが異なります。コンパイラが変わると、数学的には同じ計算を行うコードでも、機械語に変換された段階で計算順序が変わる場合があります。
計算順序が変わると、情報落ちや桁落ちが発生し得る浮動小数点数の計算結果は変化します。
Atsushi Ueno
am 17 Feb. 2022
反対方向から失礼します。私はSimulinkの後ろでMATLABが動いてるのだと思っていました。
もう少し細かく言いますと、こういう事でしょうか
- MATLABコードはインタプリタで動作
- Coder系Toolboxは専用のコンパイラでコードや実行ファイルを生成
- SimulinkモデルもSimulink用のコンパイラで実行ファイルを生成
あと何らかの浮動小数点演算(例: mtimes(*)関数とProductブロック)を挙げても、その内部で動くプログラムは異なるもので、同じ演算内容だからたまたま結果が合致したり、同じ演算でもロジックの違いにより結果が異なったりする、という事なのでしょうか?
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!