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,因此如果您有兴趣加深对该主题的理解,我将在下面提供一些额外的材料。
希望现在发生的事情更清楚了!
这里有一些资源供您使用:
假设我有一个子函数,如下所示。这两个有什么区别
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 formfunction 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,因此如果您有兴趣加深对该主题的理解,我将在下面提供一些额外的材料。
希望现在发生的事情更清楚了!
这里有一些资源供您使用: