控制语句
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/