深度学习之Octave使用五

控制语句

for循环

>>  v=zeros(10,1);
>> for i=1:10,
v(i) = 2^i;
end;
>> v
v =
      2
      4
      8
     16
     32
     64
    128
    256
    512
   1024

索引

>> indices = 1:10;
>> for i=indices,
disp(i);
end;
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10

while循环及break,continue使用

>> i=1;
>> while true,
v(i) = 999;
i = i+1;
if i == 6,
break;
end;  %结束的是 if 语句
end;  %结束的是 while 语句
>> v
v =
    999
    999
    999
    999
    999
     64
    128
    256
    512
   1024

if else的使用

>> v(1)
ans =  999
>> v(1) = 2;
>> if v(1)==1,
     disp('The value is one');
   elseif v(1) == 2,
     disp('The value is two');
   else
     disp('The value is not one or two');
   end;

如果你需要退出 Octave 你可以键入 exit 命令然后 回车就会退出 Octave 或者命令 ‘quit’  也可以

函数调用

首先,创建squarethisnumber.m文件,文件的内容如下

function y = squareThisNumber(x)
y = x^2;

文件名和函数名要一致,调用的时候,我们首先要定位到文件的目录如下

>> cd /Users/Admin/Desktop/data
>> squareThisNumber(5)
ans =  25

进阶知识

你可以使用 addpath 命令添加路径 添加路径 “/Users/Admin/Desktop/data” 将该目录添加到 Octave 的搜索路径 这样即使你跑到 其他路径底下 Octave依然知道 会在 /Users/Admin/Desktop/data 目录下寻找函数 这样 即使我现在 在不同的目录下 它仍然 知道在哪里可以找到 “squareThisNumber” 这个函数 

addpath('/Users/Admin/Desktop/data')

允许你定义一个函数 使得返回值是多个值或多个参数,例如如下函数

function [y1, y2] = squareAndCubeThisNumber(x)
y1 = x^2;
y2 = x^3;

调用

>> [a,b] = squareAndCubeThisNumber(5)
a =  25
b =  125

有一个数据集,数据点为[1,1],[2,2],[3,3],我想定义一个 Octave 函数来计算代价函数 J(θ),就是计算不同 θ 值所对应的代价函数值J,首先让我们把数据放到 Octave 里 我把我的矩阵设置为 X = [1 1;1 2;1 3] 这就是我的设计矩阵 X 第一列表示x0项 ,第二列表示我的三个训练样本的 x 值 ,设置 y 值为[1;2;3] ,设定 theta 为 [0;1],代价函数如下

function J = costFunctionJ(X,y,theta)
m = size(X,1);
predictions = X*theta;
sqrErrors = (predictions-y).^2;
J = 1/(2*m) * sum(sqrErrors);

运行计算如下

>> X = [1 1; 1 2; 1 3];
>> y = [1; 2; 3];
>> theta = [0;1];
>> j = costFunctionJ(X,y,theta)
j = 0

继续

>> theta = [0;0];
>> j = costFunctionJ(X,y,theta)
j =  2.3333


参考资料

https://www.coursera.org/learn/machine-learning/


猜你喜欢

转载自blog.csdn.net/junjun150013652/article/details/80644860