如何强制matlab在重载时调用常规函数而不是类方法?

One*_*ero 5 oop matlab function function-calls operator-precedence

假设我有一个X类的对象MyClass.MyClass有一个方法compute,当我调用时U = compute(X,...),matlab会自动调用类方法.但是,我真正想要的是调用另一个函数,该函数compute的参数以MyClass对象开头.如何强制matlab调用这个常规函数而不是进入类方法?

Bee*_*Bee 6

如果不对功能的名称或位置进行一些更改,则无法执行此操作.如果检查Matlab的函数优先顺序,方法总是在正常的外部函数之前运行.您唯一的实用选择是:

  1. 更改功能的名称.
  2. 将函数的主体移动到调用该函数的同一脚本(上面列表中的第4项)
  3. 将函数的.m文件移动到private与脚本文件位于同一文件夹中的文件夹(列表中的第5项)

UPDATE

虽然对于较小的项目来说不太实用,但您可能还需要考虑打包您的功能.在这篇SO帖子中可以找到一个很好的讨论.