MATLABとSimulinkの演算違い

8 vues (au cours des 30 derniers jours)
taka
taka le 16 Fév 2022
Commenté : Atsushi Ueno le 17 Fév 2022
MATLAB上で16桁の少数を用いた計算結果とSimulinkで同様の計算をした結果が細かい桁で異なりました。このようは原因は、計算ミス以外になにがあるのでしょうか。また、SimulinkでDisplayブロックを使用して、演算結果をlong型で表示させてみると17桁になる時があります。こちらも疑問です。

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 配列と行列の数学 dans Help Center et File Exchange

Produits


Version

R2015a

Community Treasure Hunt

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

Start Hunting!