问题标签 [matlab-compiler]

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 投票
3 回答
28578 浏览

matlab - 如何将命令行参数传递给在 Linux/Unix 上运行的独立 MATLAB 可执行文件?

如何将命令行参数传递给在 Linux/UNIX 上运行的独立 MATLAB 可执行文件?

我需要将我的 MATLAB 脚本编译为可以在没有 MATLAB 的机器上运行的独立文件。它需要能够以类似于 C 的方式工作argv[],您可以在其中执行以下操作:

命令行:

其中参数 1 和 2 是输入和输出文件。

确切的语法无关紧要,但它应该像argv[]. 有什么功能可以做到这一点?


我的意思是我的计算机上有 MATLAB,但我需要制作一个独立的可执行文件,它可以在那些计算机上没有 MATLAB 的 Unix 系统上运行(它是一个集群,只有一个节点上有 MATLAB)。我需要找到一种方法来制作 varargin 函数,而无需在运行该程序的计算机上安装 MATLAB。如果我可以告诉 MATLAB 将 MATLAB 库放在每个可执行文件中,那没关系,只要它是一个完整的独立包。

0 投票
1 回答
358 浏览

matlab - 编译matlab linux二进制

我有 matlab 编译器的许可证,可以很好地编译 exe 文件。有什么方法可以将我的项目从我的 Windows 机器编译成 Linux 二进制文件?

0 投票
1 回答
3466 浏览

matlab - 用图像处理工具箱编译Matlab共享库

我正在尝试从 Matlab 编译 C 共享库。我的 Matlab 代码使用了很多图像处理功能。所以,编译很顺利,但是当我从我的应用程序调用 dll 时,我收到如下消息:

“双精度类型输入参数的未定义函数或方法‘XYZ’”。

我已经验证我的论点没问题——这不是类型问题。所以,我尝试添加%#function XYZ到我的 .m 文件中,但这没有任何帮助。然后,我尝试-a在编译命令中使用该标志:

但它无法编译:

Depfun 错误:“无法将边缘定位为 MATLAB 路径上的函数”

我已经验证了图像处理文件在我的计算机上(我可以毫无问题地从 matlab 运行所有内容)并且我的路径指向包含它们的目录。

我还尝试将工具箱 .m 文件复制到我的工作目录中,但这很快就会膨胀成很多文件。而且,对于某些功能,没有 .m - 只有一个 .mex - 我还没有找到将 mex 文件包含到我的 .dll 中的方法。

我错过了什么?

0 投票
1 回答
1407 浏览

matlab - 使用 .NET 依赖项和封装数据的枚举构建 dll 时,mcc 编译器“Depfun 错误”

在创建使用 .NET 集成和枚举封装数据的 DLL 时,我在 MATLAB R2010b 中遇到了问题。

例子:

  1. 在 MATLAB 中有一个 .NET 程序集,我们称之为“MyAssembly”(MyAssembly.dll)。
  2. 有 Matlab 枚举类“OpenMode”

    此类使用 .NET 枚举:“MyAssembly.OpenMode”以通过 Matlab 枚举访问 .NET 枚举的方式(在我的情况下,强制类型转换是必需的): p>

  3. 应导出的 Matlab 函数:

    p>

  4. 在 Matlab 中添加 .NET 程序集(检查) /li>
  5. 尝试编译DLL: ...并得到错误: /li>

mcc 编译器在代码枚举中没有检测到“MyAssembly”存在,但是这里有一个函数会编译成功:

p>

如果您在 MATLAB 中遇到过类似问题并找到了解决方案,请告诉我该怎么做。

谢谢!

问候,铁

0 投票
1 回答
3026 浏览

matlab - 在 matlab 中创建图像数据库

我已经代表了图像现在我想保存图像和数据库中的描述我该怎么做。任何人请帮忙。

0 投票
1 回答
2411 浏览

.net - MCR 和 .NET 不兼容

我正在尝试编译使用 .NET 模块的 Matlab (R2010b) 应用程序,但我遇到了 MCR 和 .NET 模块之间不兼容的问题:

  • .NET 模块使用 Visual Studio 2010 编译。
  • MCR 配置为使用 Visual Studio 2010。
  • 该应用程序还包含一些使用 Visual Studio 2010 构建的 Mex 文件,它们在 Matlab 和 MCR 中都可以正常工作。

如果我从 Matlab cli 加载程序集一切正常,但是一旦我编译应用程序并从 cmd.exe 运行它,就会引发错误,说明程序集是使用比当前加载的运行时更新的运行时构建的。我认为 Matlab R2010b 是用 Visual Studio 2008 构建的,并认为这是问题所在,但我想知道是否有人有解决问题的方法?

0 投票
2 回答
1321 浏览

debugging - 独立 matlab 中的调试代码

假设我有一些foo在独立应用程序中使用的函数(即用mcc -m, 编译成可执行文件),它具有重要的中间结果bar。通常在函数完成后我不需要这个中间结果,因此它不是返回值。然而,对于开发和调试目的,能够使这个中间结果可访问是很有用的,我可以通过assignin将中间结果放在某个调试工作区中来做到这一点。

现在的问题是,assignin在独立编译中是不可能的,mcc如果代码中有一个错误,就会报错assignin。我想做的是assignin仅在代码以交互方式运行而不是在编译为独立应用程序时包含。此外,这会加快速度,因为我在独立应用程序中无论如何都不需要中间结果,因此可以通过不在独立应用程序中执行分配来同时处理时间和/或内存。在任何其他编程环境中,人们都会将其称为调试和发布模式下的编译。

在伪matlab中:

问题是我不知道如何表达if ~standalone,首先我不知道如何测试是否处于独立模式,但更关键的是,这需要一些代码结构,实际上导致 mcc 完全无视被保护的代码块,不要尝试编译它,因为在独立模式下无法编译assignin。

顺便说一句,这不仅对中间结果很有价值,而且对额外的数据收集也很有价值,额外的数据将在受保护的块中计算并通过assignin. 显然,此类额外数据不应在独立版本中计算,因为它没有任何用途。

matlab 中是否有任何这样的代码结构可以做到这一点,还是有更好的选择?到目前为止,在开发过程中,我一直在处理注释代码、取消注释和重新注释调试代码。

0 投票
2 回答
1033 浏览

c# - 编译后的 Matlab 函数只工作一次

我有一个 Matlab 函数编译到 C 库中。我正在使用 C# 应用程序中的这个库。

如果我第一次在 C 库中调用我的函数,一切正常,但第二次调用会导致异常 - mlfMyfunc 返回指向结果的空指针 insted 指针(即使在 mlfMyfunc 调用之后,output1 和 output2 参数也是 IntPtr.Zero)

我的DoubleArray类(函数的包装器mx...)经过了很好的测试,我认为它可以正常工作。

你知道问题可能出在哪里吗?

谢谢。卢卡斯

C#代码:

解决方案:

该问题是由重复的 Matlab 引擎初始化引起的。每次我调用分析函数时,引擎都会被初始化(Native.Mcl.mclInitializeApplication],甚至它Native.Mcl.mclTerminateApplication在块中被正确终止()finally,重复初始化会出现问题。内置的 matlab 函数仍然可以正常工作,但我的库不能。

解决方案是将mclInitializeApplication调用移到分析函数之外,并确保在应用程序生命周期中只调用一次。

0 投票
1 回答
3766 浏览

matlab - .exe MATLAB 文件反编译

我正在尝试反编译一个 32KB 的 .exe MATLAB 文件。我尝试了Boomerang软件,它提取项目 m 文件和图形。数字没问题,MATLAB 可以显示出来。但是当我打开 m 文件时,它包含无意义的字符。

如何查看 m 文件代码?你知道其他合适的软件吗?

非常感谢您。

0 投票
2 回答
1462 浏览

matlab - 如何在 Windows 上安装编译器?(对于 Matlab 程序)

我已经下载了这段代码;

http://www.cs.sfu.ca/%7Emori/research/superpixels/superpixels64.tar.gz

在自述文件中,它说;

  • 在 yu_imncut 目录中的 *.c 上运行 mex -largeArrayDims -largeArrayDims 需要 64 位架构(感谢 Richard Lowe 为 64 位 MATLAB 提供修复)
  • 从http://www.cs.berkeley.edu/projects/vision/grouping/segbench/获取 mfm-pb 边界检测器代码
  • 更改 sp_demo.m 和 pbWrapper.m 中的路径名
  • 获得快速处理器和大量 RAM
  • 运行 sp_demo.m

我试图做 mex -.. 之一,但它告诉我我没有任何编译器。我怎样才能解决这个问题?你能帮我解决这个问题吗?我正在使用 64 位 Windows 7