MATLAB 编译器与 MATLAB 编码器

2024-05-16

两者有什么区别?

据我了解,MATLAB Compiler将MATLAB代码包装成.exe文件,这样就可以在不安装MATLAB的情况下使用它,并且只需要MCR。除此之外,MATLAB Builder NE 还可以用于生成与 .Net 框架一起使用的 .Net 程序集,而不是 .exe 文件,但它们仍然需要 MCR。

现在我不明白MATLAB Coder是用来做什么的?它生成 C/C++ 代码。但 MATLAB 代码是否真的转换为 C/C++,还是只是像 MATLAB 编译器那样打包?还需要MCR才能运行吗?

我知道这不完全是一个编程问题。但我在网上搜索过,仍然没有找到明确的答案。这些都是非常昂贵的产品,所以我想知道我正在进入什么领域。


MATLAB编译器加密并存档您的 MATLAB 代码(保留为 MATLAB.m代码),并将其打包在一个瘦可执行文件(.exe 或 .dll)包装器中。它与 MATLAB 编译器运行时 (MCR) 一起交付给最终用户。如果您愿意,MCR 也可以打包在可执行文件中。

MCR 可以自由地重新分发,您可以将其视为本质上没有前端桌面的 MATLAB 副本。

当用户运行可执行文件时,它会解档并解密 MATLAB 代码,并针对 MCR 而不是 MATLAB 运行它。因此,通过此方法交付的应用程序的运行速度应与在 MATLAB 中完全相同(包括相同的速度)。

MATLAB 编码器将 MATLAB 语言的子集转换为 C 代码。然后可以通过多种不同的方式使用它,包括作为 mex 文件带回 MATLAB、使用 C 编译器进行编译以便从另一个应用程序调用,或者交付到嵌入式设备。由于它是 C 代码而不是 MATLAB 代码,因此它通常(尽管并非总是)比原始 MATLAB 代码运行得快得多。 C 代码不需要 MCR。 MATLAB 语言支持的子集非常广泛,但在实施此工作流程之前,您需要先了解一些值得注意的限制。生成的代码是 C 代码,但如果您需要使用 C++ 编译器而不是 C 编译器,它可以生成 C++ 包装器。

MATLAB编译器适用于您想要简单且(相当)直接地与没有 MATLAB 副本的人共享您编写的 MATLAB 应用程序的用例。自部署以来.m代码经过加密,还可以用于共享 MATLAB 代码,同时保护知识产权。

MATLAB 编码器还有其他用例,例如想要通过转换为 mex 文件来加速 MATLAB 代码,或者需要为其他应用程序或嵌入式设备生成 C 代码。

如果您有更详细的问题,我强烈建议您致电 MathWorks 询问他们。


Edit:以上信息对于 MATLAB R2014b 及更低版本是正确的。从 MATLAB R2015a 开始,功能来自MATLAB编译器已与功能重新混合MATLAB生成器产品,而且还有一个新产品MATLAB 编译器 SDK.

自 R2015a 起,MATLAB编译器工作方式与上述相同(即加密、存档和打包,但不生成 C),但现在将打包为 .exe 和 Excel 加载项 (.xla)。在 R2015a 之前,此功能曾经存在于产品中适用于 Excel 的 MATLAB Builder EX.

自 R2015a 起,MATLAB编译器不再生成 .dll 组件。此功能已转移到新产品中MATLAB 编译器 SDK,其中还包括生成 .NET 程序集和 Java 类的功能。在 R2015a 之前,此功能曾经存在于产品中适用于 .NET 的 MATLAB Builder NE and 适用于 Java 的 MATLAB Builder JA.

换句话说:

在 R2014b 及以下版本中,我们有:

MATLAB编译器:生成.exe和.dll组件

适用于 .NET 的 MATLAB Builder NE:生成 .NET 程序集

适用于 Java 的 MATLAB Builder JA: 生成Java类

适用于 Microsoft Excel 的 MATLAB Builder EX:生成 Excel 插件。

在 R2015a 中,我们有:

MATLAB编译器:生成.exe和Excel插件

MATLAB 编译器 SDK:生成 .dll、.NET 程序集和 Java 类。

范围和用例MATLAB 编码器这些版本中没有变化(尽管有新功能)。


Edit:自 R2015b 起,MATLAB 编译器 SDK还生成 Python 包。


有关区分的附加信息适用于 C/C++ 的 MATLAB Coder 和 MATLAB Compiler 可在此处找到 http://www.mathworks.com/matlabcentral/answers/223937-should-i-use-matlab-compiler-sdk-or-matlab-coder-to-integrate-my-matlab-applications-with-c-c.

不同的比较表用于代码生成的 MATLAB 产品 https://www.mathworks.com/help/compiler/determining-if-matlab-compiler-is-the-right-tool.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB 编译器与 MATLAB 编码器 的相关文章

  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • 使用简单矩阵乘法时出错

    我在一次简单的乘法运算中偶然发现了一个错误 这让我感到非常惊讶 我一直以为这里发生了什么 只为矩阵乘法 http www mathworks nl help matlab matlab prog operators html x 2 y z
  • 图像梯度角计算

    我实际上是按照论文的说明进行操作的 输入应该是二进制 边缘 图像 输出应该是一个新图像 并根据论文中的说明进行了修改 我对指令的理解是 获取边缘图像的梯度图像并对其进行修改 并使用修改后的梯度创建一个新图像 因此 在 MATLAB Open
  • Deploytool for MATLAB R2013b 不起作用,发生了什么变化?

    多年来我一直在使用集成deploytool为我的同事创建易于分发的 exe 文件 我几天前安装了R2013b 但无法使用deploytool不再了 尝试打包时的日志文件给出了以下内容 ant
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 像matlab一样在python中连接数组而不知道输出数组的大小

    我正在尝试在 python 中连接数组 类似于 matlab array1 zeros 3 500 array2 ones 3 700 array array1 array2 我在 python 中做了以下操作 array1 np zero
  • MATLAB 中的逻辑数组与数值数组

    我正在比较两个二进制数组 我有一个数组 其中值可以是一或零 如果值相同则为 1 如果不同则为零 请注意 我正在做检查之外的其他事情 因此我们不需要进入矢量化或代码的性质 在 MATLAB 中使用数值数组和逻辑数组哪个更有效 Logical
  • 霍夫变换检测和删除线

    我想使用霍夫变换检测图像中的线条 但是我不想绘制线条 而是想删除原始图像中检测到的每条线条 image imread image jpg image im2bw image BW edge image canny imshow BW fig
  • Blob 的簇生长

    考虑以下来自 Mathworks 的图像 我已经用标签标记了斑点 L num bwlabel I 如何迭代连接所有斑点 即从一个斑点开始 找到离它最近的一个 考虑最左边的两个斑点 可以从一个斑点的许多点绘制许多条线来连接到另一个斑点blob
  • Matlab下降低图像质量

    问候 我正在尝试找到一种简单的方法来处理图像 以便将其质量从 8 位降低到 3 位 实现这一目标的最简单方法是什么 干杯 如果要线性缩放 只需将每个像素值除以 255 7 即 如果原始图像存储在矩阵 I 中 则让低分辨率图像 J I 255
  • 在Matlab图例中使用Latex?

    我的 matlab 不接受我的 Latex 例如 如果我使用legend b 6 rightarrow b 7 它没有向我显示箭头 我该如何解决这个问题 尝试使用 Latex 解释器 例如 legend b 6 rightarrow b 7
  • 计算向量的导数

    我有以下函数 维维亚尼曲线 Phi t cos t 2 cos t sin t sin t 只需检查它是否有效 s linspace 0 T 1000 plot3 cos s 2 cos s sin s sin s 如何推导函数Phi 可能
  • 用于读取csv写入数组的c++程序;然后操作并打印到文本文件中(已经用 matlab 编写)

    我想知道是否有人可以帮助我 我正在尝试构建一个程序 从 csv 文件中读取大小未知的浮点数大数据块 我已经在 MATLAB 中编写了此代码 但想要编译和分发此代码 因此转向 C 我只是在学习并尝试阅读本文以开始 7 5 19892 4 23
  • Python 中 Matlab 'fscanf' 的等价物是什么?

    Matlab函数fscanf 似乎很强大 python 或numpy 中是否有相同的等效项 具体来说 我想从文件中读取矩阵 但我不想迭代每一行来读取矩阵 类似的东西 来自 matlab 用于读取 2D 1000x1000 矩阵 matrix
  • Matlab的uicontrol在Octave中的实现?

    我正在尝试在 Octave 中运行我们实验室中使用的图形程序的 m Matlab 代码 Octave 告诉我代码中使用的函数 uicontrol 没有定义 经过一番搜索 我发现 JHandles 包有一个 uicontrol GUI 功能的
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • 如何使用最小生成树方法将边缘连接到图像中的节点

    我正在做我的手写图像图形匹配项目 我想在图形中表示给定的单词图像 我使用下面的算法 Algorithm input Binary image B Grid width w Grid height h Output Graph g V E w
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • 如何使用神经网络保存 Sift 特征向量进行分类

    SIFT 特征的 Matlab 实现发现于http www cs ubc ca lowe keypoints http www cs ubc ca lowe keypoints 在 stackoverflow 的帮助下 我想将功能保存到 m
  • 在每次迭代中使用 for 循环的索引命名图像

    我正在使用 MATLAB 进行图像处理项目 我使用 for 循环在每次循环迭代时生成某种图像数据 图像大小不同 我的问题是如何阻止它在下一次迭代中覆盖图像 Img i j data 理想情况下我希望它有 Img 1 data for 1st

随机推荐