matlab函数命令

Matlab function command

假设我有一个子函数,如下所示。这两个有什么区别

function a=b(x,y)
.
.
.
a=output

function b(x,y)
......

如果我以第二种形式编写它,我如何定义它的主要功能以及如何查看它的输出。


另一个问题,

我从这里 (http://www.mathworks.com/matlabcentral/fileexchange/21443-multiple-rapidly-exploring-random-tree--rrt-) 找到了一个代码,其中包含一个函数,例如:

%% SetObstacleFilename
    function SetObstacleFilename(self,value)
        if isa(value,'char')
            self.obstacleFilename = value;
            self.GenerateObstacles();
        end
    end

如何在我的主要功能中使用它?此外什么是 self.GenerateObstacles() 命令?上面没有平等吗?

我想我明白你的两个问题是如何与同一件事相关的。你真的应该问一些类似的问题:

I always saw MATLAB functions written in the form function a=b(x,y), however recently I came across some code which included functions in the form function b(x,y) (e.g. function SetObstacleFilename(self,value)).... so what's up with that?

为了理解第二类函数,您需要考虑面向对象编程 (OOP).

您找到的代码示例取自 MATLAB class。 Class 相关的函数在 OOP 中被称为 "methods",并且在另一种编程语言中这个特定代码将采用 void return type function\method.

的形式

现在考虑指代 class 实例的术语 object

传统上,方法仅限于单个输出。出于这个原因,一些方法被设计为对 objects(实际上是 pointers,又名 "passing by reference")进行操作,这样就根本不需要 returning 一个值,因为输入直接操作对象。其他方法不需要 到 return 任何东西的情况可能包括具有某些 "utility" 功能的函数(例如初始化某些东西,绘制某些东西,将某些东西输出到控制台等等 - 就像您提到的 self.GenerateObstacles() 方法一样)。

关于您的其他问题:

  • SetObstacleFilename(self,value) 中的 self 看起来像是所考虑的 class 的实例。
  • 通常要使用 class 方法,您需要使用构造函数实例化一个对象(它应该是一个与 class 同名 的函数), 除非这些方法是 static.

总而言之,以上只是 OOP 最基本的基础知识。我不会试图在单腿站立的情况下教您整个 OOP Torah,因此如果您有兴趣加深对该主题的理解,我将在下面提供一些额外的材料。

希望现在发生的事情更清楚了!


这里有一些资源供您使用:

  1. MATLAB's OOP Manual.
  2. MATLAB's documentation on OOP.