问题标签 [mathlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
633 浏览

c++ - Mathematica 中的 $SystemID 不正确

我正在尝试在mathematica 中链接Mathlink 库。我使用的是 x86_64-suse-linux 操作系统,但是当我在 Mathematica 中检查 $SystemID 时,它告诉我我使用的是“Linux”而不是“Linux-x86-64”。

这是一个问题,因为如果我尝试将库链接为

(32 位版本 - 也是 Linux/ 中唯一的库)

我收到以下错误:

但是,如果我尝试将其链接为

它编译得很好,但是如果我尝试运行它,我会收到以下错误:

该文件显然存在,因为运行'locate libML64i3.so'会产生:

我假设问题在于 Mathematica 认为我没有运行 32 位系统这一事实是否正确?如果是这样,我该怎么办?

0 投票
1 回答
1318 浏览

wolfram-mathematica - 如何使用 Mathlink 创建 C 代码

我研究了使用 Visual Studio 中的 mathlink 的示例。问题是,我有一个完成所需计算的数学笔记本文件。现在我想用 Mathlink 从我的 C 程序中做同样的事情。是否有用于将 Mathematica 笔记本文件转换为 C 代码的自动工具,以便使用 mathlink 调用它们?

0 投票
1 回答
2264 浏览

wolfram-mathematica - 了解内核与前端的通信——为什么我的前端会死机?

编辑:只是确认您是否可以复制它会很有用。只需一台计算机即可尝试此操作(无需远程连接)。

更新似乎其他人无法在 Mac 或 Win7 上重现此问题,因此它要么是 WinXP 特定的,要么是我的机器特定的。在这一点上,我放弃了。


最好有一个关于前端和内核如何通信的教程,这样我们就可以调试远程内核问题。任何此类一般性答案(或其他地方的教程链接)都非常受欢迎。我已经知道 Sascha Kratky 的Remote Kernel Strategies

现在实际问题是: 当我以任何方式(例如使用远程内核策略)连接到远程机器时,前端迟早会死机。我怎样才能防止这种情况?

以下是如何在单台机器上重现问题(无需远程连接):

  1. 创建一个新的内核配置(Evaluation menu -> Kernel Configuration Options...)

    选择高级选项。

    MLOpen 的参数:

    (替换为您计算机的 IP 地址。在 Windows 上,您可以通过在命令窗口中YOUR-IP-HERE键入来获取此地址。)ipconfig

    启动内核的 Shell 命令:留空(我们将手动执行)

  2. 打开一个新笔记本,将笔记本的内核设置为您刚刚设置的内核,然后评估某些内容 ( 1+1)。

  3. 现在我们需要在连接超时之前手动启动内核。因此,在命令行模式下启动一个新内核 ( math),并评估以下内容:

    现在连接已建立,一切似乎都正常工作(除了前端粉红色消息窗口中的一条消息)

  4. 评估Manipulate[n, {n, 0, 100, 1}]。首先,这似乎也有效。现在玩滑块。前端迟早会冻结,需要被杀死。对我来说,上下拖动滑块约 10 秒而不释放它总是足够的。

为什么前端冻结? 如何在前端和内核之间创建 TCPIP 模式连接,以确保一切正常?


一些注意事项:

  • 我在 Windows XP 上。
  • 如果我使用LinkProtocol -> "SharedMemory".
  • 使用评估中止计算 -> 中止评估确实可以正常工作。
  • 我已经使用它进行了验证Links[]MathLink`$PreemptiveLink并在它们MathLink`$ServiceLink上创建并LinkConnectedQ[]返回True

Manipualate同样,请注意,只有在连续拖动滑块几秒钟而不释放它后,前端才会冻结。

链接到 MathGroup 上的相同问题。

相关:远程内核工作的防火墙设置(Mathematica)

0 投票
1 回答
311 浏览

wolfram-mathematica - 使用 Mathlink (Wolfram Mathematica) 的 REPL(读取-评估-打印循环)

我是 Mathlink 的新手,在将它集成到我的代码中之前,我尝试编写一个小的 REPL 来习惯它。代码如下(无关部分省略,对于 C 和 C++ 的可怕混合感到抱歉):

但它似乎根本不起作用。我尝试用单个 MLNextPacket 指令替换 while 循环,但无济于事;我花了几个小时搜索 Mathlink 文档,但那个文档太乱了!我在哪里做错了?

0 投票
2 回答
333 浏览

vb.net - 是否可以在没有mathematica 的情况下运行使用Mathematica .NET/Link 的VB Windows 应用程序?

我想使用 VB.Net 2010 开发一个程序,并且我想通过 .NET/Link 使用 Mathematica 3DPlot 函数。我的问题是是否可以在没有安装 Mathematica 的另一台计算机上运行该程序?谢谢

0 投票
2 回答
719 浏览

c++ - 将列表从 Mathematica 传递到 c++ (Mathlink)

我只是想将整数列表传递给用 C++ 编写的函数。我已经设置了模板 (.tm) 文件和所有文件,并且可以成功调用带有标量参数的测试函数。使用 list 参数调用函数的行为就好像该函数根本没有定义。我怀疑参数类型不匹配。

在模板文档 (http://reference.wolfram.com/mathematica/ref/file/file.tm.html) 中,列表的数据类型类似于“Int32List”。当我使用它时,我的 C++ 函数必须包含一个用于列表长度的超长参数。唯一使用列表的示例代码是“sumalist.tm”。此示例使用 IntegerList(一种未出现在独库中的类型)。

当我使用 Int32List 时,mprep 结果需要一个带有额外整数参数的函数(不像 doku 中写的那样长)。当我使用未记录的 IntegerList 类型时,额外的参数是 long 类型。

在我对标量类型的实验中,我遇到了类似的问题 - 在 tm 文件中使用“Integer”时正确调用了一个 c++ 函数,而“Integer32”则无法识别。

“sumalist.tm”示例还使用了一个奇怪的 Pattern (list:{___Integer}),我没有找到任何文档。我还想了解 Evaluate 行的含义(我怀疑它用于使函数在列表周围没有大括号的情况下可调用)。

那么谁知道哪些数据类型真正适合用列表调用 c++ 函数 - 也许也可以用实数......?

0 投票
2 回答
3838 浏览

python - 如何在 Python 程序中使用 Mathematica 函数?

我想知道如何从 Python 调用 Mathematica 函数。

我很欣赏一个例子,例如,使用 Mathematica 函数Prime

我搜索过MathLink,但如何在 Python 中使用它对我来说有点晦涩难懂。

我尝试使用一个名为pyml的 Mathematica-Python 库,但我没有成功,可能是因为这个库看起来很旧(在教程中说 Mathematica 2 或 3)。

尝试编译源代码,Wolfram/Mathematica/8.0/SystemFiles/Links/Python但在使用 python 2.6 时出现了几个错误(文档说应该只适用于 python 2.3)。

Pythonika 很有趣,但是,看起来只是在 Mathematica 笔记本中使用,我想编写.py调用 Mathematica 函数的文件。

那么,有人知道编写使用 Mathematica 函数的 python 程序的好方法,可以给我一个例子吗?

0 投票
0 回答
634 浏览

c++ - 在 Visual Studio 2010 Express 中编译 Mathlink 代码 LNK2019 错误

我正在尝试编译一个用于 Mathematica 的简单 C 文件。(注意:我确实遵循了其余的说明,创建了空的 addtwotm.c 文件并添加了 addtwo.tm)

但是,在构建时,我得到以下输出:

我已按照 Wolfram 的 MathLink 开发人员指南中提供的所有说明进行操作,并确保将“ml32i3m.lib”添加到 Linker>Input>Additional Dependencies。假设 ml32/ml64 lib 文件包含 MlMain 的信息。任何帮助表示赞赏:)

0 投票
1 回答
192 浏览

c# - Mathematica 中的命令“nb = NotebookCreate[]”失败?

如果我在 Mathematica 中打开一个笔记本并输入“nb=NotebookCreate[]”,它会按预期创建一个新的笔记本窗口。

但是,如果我在 C# 中尝试相同的命令,它会失败,并且不会打开新的笔记本窗口:

请注意,如果我传入“2+2”,它会返回“4”,这证明到 Mathematica 内核的链接运行良好。

0 投票
1 回答
333 浏览

wolfram-mathematica - Mathematica 8.0 中的 CUDA Mathlink 未安装

我根据此处的网站为 CUDA 和 Mathlink 创建了一个简单的示例:

http://hpc.nomad-labs.com/archives/3

当我尝试使用“Install[...]”在 Mathematica 中安装该函数时,Mathematica 永远不会完成该函数的安装。我创建并测试了一个简单的 C 函数,我可以在没有函数的情况下将其安装在 Mathematica 中。

即使文件中没有 CUDA 函数,当我在 CUDA 库中链接时似乎也会发生错误。

澄清一下,我不想使用包 CUDALink。我想将 CUDA 函数加载为 Mathematica 中的 C 函数。我有一个使用 CUDALink 的程序的工作版本,但我无法使用 CUDALink 控制堆栈和堆大小。通过创建一个 C 程序并使用命令“Install[...]”,我可以控制堆栈大小和堆大小。

我在这里错过了什么吗?

我正在使用带有 CUDA 4.2 的 Ubuntu 12.04。

有人在 Mathematica 8.0 中有 CUDA 和 Mathlink 的工作示例吗?