【问题标题】:how can i hide my own function definition i.e.function m-file in matlab?如何隐藏我自己的函数定义,即 matlab 中的函数 m 文件?
【发布时间】:2014-05-10 18:31:26
【问题描述】:

我已经为我最后一年的项目创建了自己的函数定义,即函数 m 文件。现在我想隐藏该函数定义。有什么办法可以在matlab中做到这一点? 我希望这个函数 m 文件应该成为我的 matlab 编译器目录的一部分,这样当我从任何 m 文件调用该函数时,它会被调用并执行,但它的函数定义不应该对任何人可见.. 实际上我想对我的顾问和项目评估委员会隐藏那个函数定义。我不希望他们得到关于这个函数定义的任何提示......有人对我说,“将你的 m 文件转换为 c 或 c++ 代码然后将它添加到matlab目录中。你的函数定义将被隐藏,并且在调用时也会被执行。 但我不知道该怎么做?谁能帮我做这件事?我正在使用 matlab 7.9.0 (R2009b) 请帮帮我,如果有人对此有所了解.. :)

【问题讨论】:

  • 有一个内置函数混淆器,pcode(link),您可以使用它。然后将包含 pcode 的文件夹添加到 matlab 路径(或将 pcode 文件添加到路径上的文件夹),将使其可以从任何其他函数访问(只要它没有被隐藏)......转换为 c 或c++(或直接转换为 mex)需要额外的工具箱,您可能有权访问,也可能无权访问。
  • 由于代码是要与他人共享的,如果你使用mex(或者新版Matlab中的coder)编译成C/C++,你可能还需要编译对于多个平台,例如,Mac Intel 64, AMD 64, Windows Intel 32 and 64。使用pcode 更直接。
  • +1 我没想到有更明显的理由支持pcode...(也将我的评论转换为答案)

标签: matlab


【解决方案1】:

这里真的有两个部分

  1. '隐藏'函数定义
  2. 可以从 m 文件中访问函数

实际上还有第三个,我不会在下一行进一步讨论或讨论 3. 你为什么要向你的顾问和评估委员会隐瞒最后一年项目的工作


1)‘隐藏’函数定义

有一个内置函数混淆器称为pcode (documentation)

这可以直接在函数 m 文件上使用,并将在当前目录中创建函数的副本,文件扩展名为 .p,其中代码是“隐藏的”。

用法

pcode(foo) % foo.m is your function

2) 访问函数

.p 文件将可用于任何函数,只要它位于 Matlab 路径上。 因此,只需将包含 .p 文件的文件夹添加到 Matlab 路径即可。

有几种方法可以做到这一点,我个人会使用addpath

(或者将.p 文件添加到路径上已经存在的文件夹中)

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多