MATLAB変数データ型の設定について

7 ビュー (過去 30 日間)
Kentaro Fujita
Kentaro Fujita 2023 年 11 月 1 日
コメント済み: Kentaro Fujita 2023 年 11 月 1 日
SimulinkでLTI Systemブロック(ローパスフィルタやノッチフィルタを組み合わせた離散系伝達関数)を通過した後のスカラー信号の数値が1.0123456e-322(実際には小数点以下15桁)など、double型における正の数の最小値 2.2251e-308 (=realmin) よりも小さくなる場合があります。
変数型はSimulinkのモデル設定>コンフィギュレーションパラメータ>数値とデータ型、にて「指定不足のデータ型の規定値」をdoubleにする以外では、自身で設定してはいません(SimulinkのGainなど各ブロックではデータ型を初期設定の "Inherit: Inherit via internal rule" にしています)。
【質問】
(1) どのような理由で、上記のようにSimulinkにおける信号の指数が1.0123456e-322になるなど、e-308(realmin相当)よりも小さくなるのでしょうか。
(2) 信号の数値をdouble型における正の数の最小値 2.2251e-308 (=realmin)の範囲までに留めるためには、どのように設定すればよいのでしょうか。
  2 件のコメント
Toshinobu Shintai
Toshinobu Shintai 2023 年 11 月 1 日
(1)について予想ですが、IntelのCPUを使うPCにインストールされたMATLABは、計算する際にIntelの拡張倍精度浮動小数点数(全長80bit、指数部15bit、仮数部64bit)を用いて計算します。
そのために、1.0123456e-322になるなど、e-308(realmin相当)よりも小さくなるのではと思いました。
Kentaro Fujita
Kentaro Fujita 2023 年 11 月 1 日
お返事ありがとうございます。
Intel-CPUの拡張倍精度が影響する可能性については見逃しておりました。意図していないデータ型(本来のdouble型以外)になっていると他のソフトウェアにデータを渡すときなどに想定外の影響があるかもしれず、可能であれば意図通りのデータ型で値を定義したいと考えております。
対策についてもお心当たりがあればご教示いただけますと幸いです。

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

回答 (0 件)

カテゴリ

Help Center および File Exchange信号属性とインデックス付け についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

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

Start Hunting!