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