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

조회 수: 10 (최근 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 CenterFile Exchange에서 信号属性とインデックス付け에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!