如何给客户一个matlab项目?

Posted

技术标签:

【中文标题】如何给客户一个matlab项目?【英文标题】:How to give client a matlab project? 【发布时间】:2014-12-08 05:07:29 【问题描述】:

如果一家公司从事 matlab 项目,那么他们如何为客户提供项目?我的意思是他们将哪个文件发送给客户,因为他们无法将整个代码和数据交给客户?

【问题讨论】:

你看过pcode吗? 山姆·罗伯茨的这篇文章也可能有帮助:***.com/questions/18126407/… 【参考方案1】:

这取决于很多事情,例如您为客户构建的产品的性质、您与他们的关系和合同协议,以及他们将来是否需要修改产品。

当我为一家公司进行 MATLAB 项目咨询时,我通常会向他们提供 MATLAB 源代码。合同的一部分通常会说他们拥有我为他们制作的代码(以及代码的版权),然后他们可以用它做几乎任何他们想做的事情。

如果您有不同的关系,您继续拥有代码并需要阻止他们阅读和/或修改它,那么问题实际上与任何其他语言相同:您依赖于技术限制和法律限制的混合,旨在根据您的需要进行限制,同时尽量减少对最终用户的不便。

例如,

    您可以使用命令pcode 混淆您的代码。这将阻止几乎所有不是非常坚定的人看到您的代码并对其进行修改(尽管存在一些漏洞),但他们仍然能够在 MATLAB 中运行它。缺点可能是您的代码在未来版本的 MATLAB 中可能变得无法执行,因此您可能需要再次支持它以在以后修复它。为了缓解这种情况,您可以在合同或许可协议中指定仅支持特定版本的 MATLAB。 您可以使用 MATLAB Compiler 生成包含加密形式代码的独立库或可执行文件。缺点可能是他们宁愿使用 MATLAB 中的代码。一个好处是,与第一个选项不同,它不需要 MATLAB,因此您将来不会受到向后兼容性问题的影响。 您可以在 MATLAB 应用程序中包含许可证管理代码。您可以自己滚动,也许通过调用一些 Java 来进行密码学(除非您非常有才华,否则您可能无法使其非常安全,但您可能能够使一些简单且可行的东西) ,或者您可以购买性能良好的第三方 C 库,然后从 MATLAB 中调用它们。 您可以简单地在您的代码中添加版权行,说明您拥有版权,并根据特定条款将代码许可给他们,例如他们可以查看、使用它,但不能修改或重新分发它。如果你真的想要,你可以要求他们也签署一份保密协议,要求他们不要与第三方讨论代码的内容。

尽管 MATLAB 中可用的技术限制与 C 或 Java 等编译语言的技术限制略有不同,但归根结底,这些限制只是为了让诚实的人保持诚实 - 任何有决心的人都能做到最终绕过它们,它们很可能会给诚实的人带来不便,让他们讨厌你的产品或服务。

最好结合使用非常轻松的技术限制、清晰的合同和许可条款以及信任。

广告> 我提供的咨询服务之一是在准备 MATLAB 代码以进行部署(包括保护它)方面提供建议和帮助。如果您认为您会从中受益,请与我们联系。 /广告

【讨论】:

#2 的另一个缺点是它依赖于平台,因此您需要为每个操作系统编译出版本(在某些情况下可能是 32 位/64 位)。还有some toolbox functionality that Matlab Compiler doesn't support。【参考方案2】:

您可以使用 Matlab 编译器并将您的代码编译为 Windows 的 exe 文件。这是公司通常所期望的。一些自己有研发的人可能会根据您与他们的关系/合同要求您提供原始 m 代码或特定功能。我多次被要求提供 m 代码,并且在我的合同上说我应该将这些信息提供给他们。 (英国)

【讨论】:

如果我将它转换为.exe,那么matlab将如何运行它?如果它在cmd中工作,那么如何转换相同的? @anurag,用于制作.exe的源代码仍然存在于开发者网站的源代码形式中,可用于从.m或.exe运行。 “交付给客户”的全部意义在于您不认为他们首先要运行 MATLAB。如果他们这样做,.exe 会保护您的 IP

以上是关于如何给客户一个matlab项目?的主要内容,如果未能解决你的问题,请参考以下文章

matlab中如何给特定区域填充色彩?

如何用matlab给地图标点?

matlab中如何给已有矩阵插入一行或一列值

如何以异步方式有效地将变量从 Matlab 传递到 GPU?

在matlab的GUI中的listbox如何添加选项

matlab 将mat文件中数据赋给另外一个变量