问题标签 [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.
matlab - 如何将命令行参数传递给在 Linux/Unix 上运行的独立 MATLAB 可执行文件?
如何将命令行参数传递给在 Linux/UNIX 上运行的独立 MATLAB 可执行文件?
我需要将我的 MATLAB 脚本编译为可以在没有 MATLAB 的机器上运行的独立文件。它需要能够以类似于 C 的方式工作argv[]
,您可以在其中执行以下操作:
命令行:
其中参数 1 和 2 是输入和输出文件。
确切的语法无关紧要,但它应该像argv[]
. 有什么功能可以做到这一点?
我的意思是我的计算机上有 MATLAB,但我需要制作一个独立的可执行文件,它可以在那些计算机上没有 MATLAB 的 Unix 系统上运行(它是一个集群,只有一个节点上有 MATLAB)。我需要找到一种方法来制作 varargin 函数,而无需在运行该程序的计算机上安装 MATLAB。如果我可以告诉 MATLAB 将 MATLAB 库放在每个可执行文件中,那没关系,只要它是一个完整的独立包。
matlab - 编译matlab linux二进制
我有 matlab 编译器的许可证,可以很好地编译 exe 文件。有什么方法可以将我的项目从我的 Windows 机器编译成 Linux 二进制文件?
matlab - 用图像处理工具箱编译Matlab共享库
我正在尝试从 Matlab 编译 C 共享库。我的 Matlab 代码使用了很多图像处理功能。所以,编译很顺利,但是当我从我的应用程序调用 dll 时,我收到如下消息:
“双精度类型输入参数的未定义函数或方法‘XYZ’”。
我已经验证我的论点没问题——这不是类型问题。所以,我尝试添加%#function XYZ
到我的 .m 文件中,但这没有任何帮助。然后,我尝试-a
在编译命令中使用该标志:
但它无法编译:
Depfun 错误:“无法将边缘定位为 MATLAB 路径上的函数”
我已经验证了图像处理文件在我的计算机上(我可以毫无问题地从 matlab 运行所有内容)并且我的路径指向包含它们的目录。
我还尝试将工具箱 .m 文件复制到我的工作目录中,但这很快就会膨胀成很多文件。而且,对于某些功能,没有 .m - 只有一个 .mex - 我还没有找到将 mex 文件包含到我的 .dll 中的方法。
我错过了什么?
matlab - 使用 .NET 依赖项和封装数据的枚举构建 dll 时,mcc 编译器“Depfun 错误”
在创建使用 .NET 集成和枚举封装数据的 DLL 时,我在 MATLAB R2010b 中遇到了问题。
例子:
- 在 MATLAB 中有一个 .NET 程序集,我们称之为“MyAssembly”(MyAssembly.dll)。
有 Matlab 枚举类“OpenMode”
此类使用 .NET 枚举:“MyAssembly.OpenMode”以通过 Matlab 枚举访问 .NET 枚举的方式(在我的情况下,强制类型转换是必需的): p>应导出的 Matlab 函数:
p>- 在 Matlab 中添加 .NET 程序集(检查) /li>
- 尝试编译DLL: ...并得到错误: /li>
mcc 编译器在代码枚举中没有检测到“MyAssembly”存在,但是这里有一个函数会编译成功:
p>如果您在 MATLAB 中遇到过类似问题并找到了解决方案,请告诉我该怎么做。
谢谢!
问候,铁
matlab - 在 matlab 中创建图像数据库
我已经代表了图像现在我想保存图像和数据库中的描述我该怎么做。任何人请帮忙。
.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 构建的,并认为这是问题所在,但我想知道是否有人有解决问题的方法?
debugging - 独立 matlab 中的调试代码
假设我有一些foo
在独立应用程序中使用的函数(即用mcc -m
, 编译成可执行文件),它具有重要的中间结果bar
。通常在函数完成后我不需要这个中间结果,因此它不是返回值。然而,对于开发和调试目的,能够使这个中间结果可访问是很有用的,我可以通过assignin
将中间结果放在某个调试工作区中来做到这一点。
现在的问题是,assignin
在独立编译中是不可能的,mcc
如果代码中有一个错误,就会报错assignin
。我想做的是assignin
仅在代码以交互方式运行而不是在编译为独立应用程序时包含。此外,这会加快速度,因为我在独立应用程序中无论如何都不需要中间结果,因此可以通过不在独立应用程序中执行分配来同时处理时间和/或内存。在任何其他编程环境中,人们都会将其称为调试和发布模式下的编译。
在伪matlab中:
问题是我不知道如何表达if ~standalone
,首先我不知道如何测试是否处于独立模式,但更关键的是,这需要一些代码结构,实际上导致 mcc 完全无视被保护的代码块,不要尝试编译它,因为在独立模式下无法编译assignin。
顺便说一句,这不仅对中间结果很有价值,而且对额外的数据收集也很有价值,额外的数据将在受保护的块中计算并通过assignin
. 显然,此类额外数据不应在独立版本中计算,因为它没有任何用途。
matlab 中是否有任何这样的代码结构可以做到这一点,还是有更好的选择?到目前为止,在开发过程中,我一直在处理注释代码、取消注释和重新注释调试代码。
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
调用移到分析函数之外,并确保在应用程序生命周期中只调用一次。
matlab - .exe MATLAB 文件反编译
我正在尝试反编译一个 32KB 的 .exe MATLAB 文件。我尝试了Boomerang软件,它提取项目 m 文件和图形。数字没问题,MATLAB 可以显示出来。但是当我打开 m 文件时,它包含无意义的字符。
如何查看 m 文件代码?你知道其他合适的软件吗?
非常感谢您。
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