1

次のようなコード行を受け取りました entr -= normed_eigval * log(normed_eigval) / log(dim);

normed_eigvalから派生していますが、私はそれがタイプでcomplexArray*あることを知っています。MATLAB の MEX インターフェイスと Visual Studio 10 をコンパイラとして使用してコードをコンパイルしようとすると、次のエラーが表示されます。dimptrdiff_t

C2668: ambiguous call to overloaded function

またはlog_ long double_ float_ double_

64 ビットの Windows マシンを使用しています。型キャストを使用してこの問題を解決できますか? はいの場合、どのタイプを選択すればよいですか? size_tまたはptrdiff_t標準の整数型に変換する場合、64 ビット Windows で問題が発生する可能性があると思います...

4

1 に答える 1

0

normed_eigval使用している数値の精度が決まるため、同意するものを選択してください。ptrdiff_t整数を浮動小数点値に変換してから、その対数を取ります。

より速くする必要がある場合は、対数の逆数を事前に計算することができます。

于 2013-11-12T08:38:48.750 に答える