Octave 控制语句,定义和使用函数

目录

Octave 控制语句,定义和使用函数

for

while

break

if-else

定义和调用函数

一个更复杂的例子


Octave 控制语句,定义和使用函数

for

首先初始化一个10行1列的列向量v:

Octave 控制语句,定义和使用函数_第1张图片

for循环语句

v输出结果为:

即,把从1到10的2^i存放到列向量v中。

或者,先初始化一个序列indices(英文,索引):

Octave 控制语句,定义和使用函数_第2张图片

while

Octave 控制语句,定义和使用函数_第3张图片

break

(以v为10*1的零向量为例)

Octave 控制语句,定义和使用函数_第4张图片或者可以让语句结构看起来更清晰些,添加一些空格:Octave 控制语句,定义和使用函数_第5张图片

(e...好像tab键不能用?...)

if-else

Octave 控制语句,定义和使用函数_第6张图片

最后一行为输出结果

 

定义和调用函数

在Octave环境下定义函数,需要创建一个文件,用函数名来命名,以 ' .m ' 的后缀结尾。

当Octave发现这个文件,它知道应该在什么位置查找该函数的定义。

如,创建一个 ‘squareThisNumber.m’ 文件

Octave 控制语句,定义和使用函数_第7张图片

打开这个文件,写入函数定义

第一行告诉Octave,我希望这个函数返回一个值,将它存放在变量y中;并且,还告诉Octave,这个函数有一个自变量x。

在这个文件中,函数定义的主体就是第二行

Octave 控制语句,定义和使用函数_第8张图片

(目前使用的是notepad++,其他记事本、写字板也可以,写字板更好)

调用该函数

首先要把Octave的路径换成函数定义文件所在的路径,否则Octave会认为函数没有被定义。

添加Octave查找路径

即可以使在添加路径(如桌面)到Octave的查找路径之后,就算不在该目录下,也能找到该目录下的文件(如C盘)

Octave还可以定义有多个返回值的函数

Octave 控制语句,定义和使用函数_第9张图片

 

一个更复杂的例子

现在要定义一个Octave函数来计算对于不同theta取值的代价函数J。假设有如下数据集。

Octave 控制语句,定义和使用函数_第10张图片

 

X(设计矩阵)的第一列代表x_0,第二列为训练集的样本

y代表每个训练数据对应的输出,即y轴坐标

Octave 控制语句,定义和使用函数_第11张图片

代价函数 ' costFunctionJ.m '的函数定义为:

Octave 控制语句,定义和使用函数_第12张图片

theta为theta_0、theta_1等组成的向量。下图为不同theta向量取值时,代价函数 j 的值:

(因为正确的回归的theta的取值正好为[0;1],因此当theta=[0;1]时,代价函数 j 值为0)

Octave 控制语句,定义和使用函数_第13张图片

 

 

 

 

 

你可能感兴趣的:(Octave)