1

我收到了类似的代码行 entr -= normed_eigval * log(normed_eigval) / log(dim);

虽然normed_eigval源于complexArray*,我知道那dim是类型ptrdiff_t。当我尝试使用 MATLAB 的 MEX 接口和 Visual Studio 10 作为编译器来编译代码时,我收到一个错误:

C2668: ambiguous call to overloaded function

告诉我log可能是long doublefloat或者double

我使用的是 64 位 Windows 机器。我可以使用类型转换来解决这个问题吗?如果是,我应该选择哪种类型?size_t我认为如果或ptrdiff_t将要转换为标准整数类型,在 64 位 Windows 下可能会出现一些问题......

4

1 回答 1

0

选择任何一个同意,normed_eigval因为这决定了您正在使用的数字精度。您将ptrdiff_t整数转换为浮点值,然后取其对数。

如果您需要更快的速度,您可能可以预先计算对数的倒数。

于 2013-11-12T08:38:48.750 回答