【问题标题】:Compare Numpy and Matlab code that uses random permutation比较使用随机排列的 Numpy 和 Matlab 代码
【发布时间】:2014-03-12 09:10:04
【问题描述】:

由于随机数状态,我无法比较两个代码的输出。

我将 MATLAB randperm 函数与等效的 numpy.random.permutation 函数的输出进行比较,但是,即使我使用 MATLAB rand('twister',0) 和 python numpy.random.seed(0) 将种子设置为相同的值,我'正在获得不同的排列。

我不得不说,如果按照上面的方式设置种子,MATLAB 的 rand 和 numpy numpy.random.rand 的结果是相同的。

【问题讨论】:

  • 他们可能使用不同的随机数生成算法。在那种情况下,即使种子相同,输出也会不同。
  • 如果您只需要比较代码,您可以使用 Matlab 或 Python 输出足够数量的随机排列并将它们保存到文件中。然后另一个版本可以从文件中读取值。这可能是最简单的解决方法。

标签: python matlab random numpy permutation


【解决方案1】:

这是一个常见问题。虽然随机数生成器是相同的,但将随机数流转换为随机排列的函数是不同的。没有描述预期结果的指定标准算法。

要解决此问题,您必须在两个工具中使用相同的库。

【讨论】:

  • 一些建议如何做到这一点?
  • 有很多可能性。我不知道你打算做什么,所以我不能给出建议。我想到的一些想法:1)从您的相关matlab函数生成一个dll,从python调用它2)从m函数创建一个独立的exe,从python调用它3)通过com或类似调用m函数自动化 4) 使用系统shell调用matlab中的python代码 5) 在matlab中使用org.python.util.PythonInterpreter来访问python。
  • 只需在python和matlab中以完全相同的方式实现您自己的排列算法,您肯定可以在网上找到一些食谱。
猜你喜欢
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 2018-02-14
  • 1970-01-01
  • 2023-03-20
  • 2017-10-13
相关资源
最近更新 更多