Simulink Embeded Coderで出力された関数の引数のデータ型をSingle型にすると正しく出力されない
Show older comments
Simulink Embeded Coderにて2d lookuptableのブロックを出力しdllファイルの関数としてvb.net環境下で利用しようとしています。
この関数の引数をsingle型にすると正しく出力されず関数の戻り値はゼロになってしまいます。
2d lookuptableのブレークポイント値の型をsingleにして型を合わせていますが、singleの引数として
関数宣言し、single型の変数を引数として計算させると戻り値がゼロになってしまいます。
型を合わせずdouble型として関数宣言するとうまくいきます。
何故single型を使うとうまくいかなくなるのでしょうか?
3 Comments
Atsushi Ueno
on 18 Dec 2022
(できない為)何も動かして確認していませんが:
DLLの関数が出力する型と、呼出元のvb.netで受け取る型が異なるからだと思います。
和也
on 18 Dec 2022
Atsushi Ueno
on 18 Dec 2022
(´・ω・`) ゼンゼン ワカンナイ...
>visual basicではreal_T型が存在しないので型指定することができないので
MATLABにもreal_T型はありません。下記説明によればreal_T は double に対する typedef です。
>これらを踏まえると値のレンジ縮小へキャストする型指定に対しては注意が必要で、型指定をしないか値のレンジ拡大側へのキャストにする、が結論になりますでしょうか?
動きを確認してませんし、目ぼしいドキュメントにも辿り着けないので、何とも言えないです。
単精度浮動小数点型 (Single) (Visual Basic) を見ると、MATLABとVisual BasicのSingle型は同じに見えますが、メモリ配置が合致していないとか、同じアドレスを見れてないとか、何か違いが生じるのかもしれません。
>Single の既定値は 0 です
との事なので、アクセスしたつもりが実際にはアクセス出来ておらず、規定値の0のままになっているのではないでしょうか?
Answers (0)
Categories
Find more on コード生成 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!