Matlab函数命令

时间:2015-02-18 16:37:19

标签: matlab function variables

假设我在下面看到了一个子功能。这两个有什么区别

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()命令?它没有平等吗?

1 个答案:

答案 0 :(得分:0)

我想我看到你的两个问题都与同一件事有关。你真的应该问过以下几点:

  

我总是看到以function a=b(x,y)形式编写的MATLAB函数,但最近我遇到了some code,其中包含function b(x,y)形式的函数(例如function SetObstacleFilename(self,value))...那是怎么回事?

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

您找到的代码示例来自MATLAB class。类相关函数在OOP中称为“方法”,而另一种编程语言中的特定代码将采用void return type函数\方法的形状。

现在考虑引用object的实例的术语class

传统上,方法仅限于单个输出。出于这个原因,一些方法被设计为在objects(实际pointers,AKA“通过引用传递”)上操作,使得根本不需要返回值,因为输入对象是直接操作的。当方法不需要返回任何东西的其他情况可能包括具有一些“实用”功能的函数(例如初始化某些东西,绘制一些东西,输出一些东西到控制台等等 - 就像{{1你提到过的方法。)

关于您的其他问题:

  • self.GenerateObstacles()中的self看起来像是所考虑的类的实例。
  • 通常使用类方法,您需要使用构造函数(应该是类的同名的函数)来实例化对象,除非这些方法是SetObstacleFilename(self,value)。< / LI>

总而言之 - 以上只是OOP最基本的基础知识。我不会试图在单腿站立时教你整个OOP Torah,所以我在下面提供一些额外的材料,如果你有兴趣进一步理解这个主题。

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


以下是一些资源:

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