【发布时间】:2014-10-16 20:12:22
【问题描述】:
我有一个 Matlab 科学代码,我想将包含对反转函数 pinv()(本机 Matlab)的调用的 Matlab 代码的输出与现在调用 pinv() 的 C++ 实现的相同 Matlab 代码的输出进行精确比较.
我使用 Matlab 代码调用 C++ pinv 而不是 Matlab pinv():我使用相关 API 将 C++ pinv 编译为 mex 文件。
对编译为 mex 文件的函数的调用能否在 Matlab 和 C++ pinv() 之间的实现差异之上引入一些数值差异?
【问题讨论】:
-
我可能没有正确理解这个问题,但你不能运行代码并检查输出吗?除此之外,我愿意相信,只要这两个代码在同一台机器上运行,除了 C++ 和 Matlab 中已经存在的差异之外,就不应该有差异添加。
-
不,MEX 的东西没有副作用。它只是另一个 C++ 包装器。
mxArray内部只有一个缓冲区。它是一种不透明的类型,但它将普通的旧数据存储在某个地方。除非您通过在 MATLAB 中转换输入或输出来修改数据。
标签: c++ matlab floating-point precision mex