MATLABとSimulinkの演算違い

15 ビュー (過去 30 日間)
taka
taka 2022 年 2 月 16 日
コメント済み: Atsushi Ueno 2022 年 2 月 17 日
MATLAB上で16桁の少数を用いた計算結果とSimulinkで同様の計算をした結果が細かい桁で異なりました。このようは原因は、計算ミス以外になにがあるのでしょうか。また、SimulinkでDisplayブロックを使用して、演算結果をlong型で表示させてみると17桁になる時があります。こちらも疑問です。

採用された回答

Hernia Baby
Hernia Baby 2022 年 2 月 16 日
編集済み: Hernia Baby 2022 年 2 月 16 日
おそらく浮動小数点の演算による誤差かと思われます。 参考 全く同じコードで異なるPCを使うと全く違う結果が出る
  4 件のコメント
Toshinobu Shintai
Toshinobu Shintai 2022 年 2 月 17 日
編集済み: Toshinobu Shintai 2022 年 2 月 17 日
横から失礼します。
とても平たく言いますと、MATLABとSimulinkではコンパイラが異なります。コンパイラが変わると、数学的には同じ計算を行うコードでも、機械語に変換された段階で計算順序が変わる場合があります。
計算順序が変わると、情報落ちや桁落ちが発生し得る浮動小数点数の計算結果は変化します。
Atsushi Ueno
Atsushi Ueno 2022 年 2 月 17 日
反対方向から失礼します。私はSimulinkの後ろでMATLABが動いてるのだと思っていました。
もう少し細かく言いますと、こういう事でしょうか
  • MATLABコードはインタプリタで動作
  • Coder系Toolboxは専用のコンパイラでコードや実行ファイルを生成
  • SimulinkモデルもSimulink用のコンパイラで実行ファイルを生成
あと何らかの浮動小数点演算(例: mtimes(*)関数とProductブロック)を挙げても、その内部で動くプログラムは異なるもので、同じ演算内容だからたまたま結果が合致したり、同じ演算でもロジックの違いにより結果が異なったりする、という事なのでしょうか?

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange配列と行列の数学 についてさらに検索

製品


リリース

R2015a

Community Treasure Hunt

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

Start Hunting!