1、加法,正常的:直接输入5+6 回车
2、等、不等(==,!或者~都可以)
3、或与非(||、&&、!或者~)
(使用 PS1(’>> '); 可以改变输入输出框的样式)
(使用%书写注释)
4、声明变量
(末尾不加分号则会在声明后进行输出,加上分号后不会进行输出)
声明之后,输入变量名 回车 即可查看该变量,也可以以使用disp(变量)进行查看,也可以使用disp(printf())、disp(sprintf())(后面写法与C语言相同,使用%与’’)。
format long 回车 加变量名 回车 或者 format short 回车 加变量名 回车,可以分别打印多的、少的小数点后位数。
5、向量与矩阵
矩阵:
用分号隔开代表一行结束(换行到下一行)
这么写也可以
向量:
特殊用法:V=1:1:5
代表从1开始,步长为1,到5结束的行向量
特殊用法:ones(m,n)、zeros(m,n)、rand(m,n)
生成m行n列的单位矩阵、零矩阵、随机数矩阵(介于0-1)
特殊用法:eye(m):生成m阶的单位矩阵
特殊用法:size(m):返回矩阵的大小(行 列)
注意:size(A)本质上返回的是一个一行两列的矩阵,可以将它赋值给变量!
size(A,1),会返回第一维度的大小(即行数)
特殊用法:length(m),返回向量(矩阵)中最大维度的大小
(一般我们是对向量使用该指令)
6、绘制直方图
hist(变量名,数量),数量用于限制有多少个竖条
当我们打开Octave时,我们已经处在一个默认的路径中,使用pwd查看
cd ‘C:\Users\ang\Desktop’,表示更改路径为xxx
使用ls,列出当前路径中的文件
load data.txt 或者 load(‘data.txt’)
(who指令,可以显示当前Octave在内存中储存的所有变量)
(whos,能告诉更详细的所有变量信息)
删除变量:clear 变量名
clear all(或clear) 删除所有变量
clc 清屏(但不清除变量)
v=data(1:5),将data的前五个数据传给v
save 文件名.文件后缀 需要被存储的变量名 (将某个变量存储到硬盘)
(将变量v存储到hello.txt文件中)
索引
A(3,2),返回第三行第二列的元素
A(2,:),返回第二行的所有元素
A(:,3),返回第三列的所有元素
A(:,2)=[10; 11; 12]
代表将A的第二列的值替换为,10,11,12
A=[A,[100;101;102]]
代表在A右边再增加一列,100,101,102
A( : )
代表将A的所有元素放到一列上
分块矩阵
[A,B] 和 [A B]一样
A*B代表矩阵乘法,A.*B代表A中的元素与B中的元素对应相乘(不再是矩阵乘法!)
通常 点. 表示元素的运算
A.^2 代表将A中每个元素求平方
1./A 代表将A中每个元素取倒
log(A) 代表将A中每个元素求对数
exp(A) 代表将A以V中元素为指数的幂运算
abs(A) 代表求A的绝对值
-A 代表取反=-1 * A
->A+ones(length(A),1)
或直接:A+1
其它运算
val代表值,ind代表它在向量中的索引(第几个,从1开始),ind可以省略,只使用max求其最大值。
(如果对矩阵使用max,它会返回每一列的最大值)
a < 3,将a中每个元素与3相比,大为1,小为0 ,并返回一个同等大小的矩阵(向量)。
扩展:find(A<3),这会找出小于3的元素,返回其索引。
A=magic(3) 生成一个每条对角线,每列每行加起来都是同一个数的三阶矩阵(在机器学习中用处不大)
sum(a),将a中所有元素求和。
(prod(a),求a中所有元素的乘积)
floor(a),对a向下取整(往小的取:0.5->0),ceil(a),对a向上取整。
max(A,[],1):返回每一列的最大值(输出一行)
max(A,[].2):返回每一行的最大值(输出一列)
默认的MAX是对每列求最值!
如果想直到矩阵的最大值,max(max(A))即可实现。
(也可以将A转换成一个向量:A( : )然后使用max(A))
sum(A,1):对每一列求和(输出一行)
sum(A,2):对每一行求和(输出一列)
一般来说,函数中使用1,代表对列做操作,使用2,代表对行做操作)
用A.*eye(9),即只要对角线上的元素,主要这里必须用 . * 普通的 * 是矩阵相乘,任何矩阵乘单位矩阵不改变该矩阵,所以无意义。
再用sum(A. * eye(9))即可得到对角线之和!
plot(t,y1);
hold on;
plot(t,y2);
(给图像加上标签)
(标记两条函数曲线)
标记顺序按照你生成的顺序!
(加上图像标题)
(图像保存)
(如何将两个图放在同一个窗口中展示,不是在同一个xy轴下)
使用
说明:前面的1,2代表将格子分为1X2的大小(两个),最后一个1代表现在在第一个格子中进行作图。
(改变x,y 的刻度值)
(它是对每个图进行修改,不是所有图)
将x限制在0.5 - 1 ,将y限制在-1 - 1
使用逗号,可以一个个执行指令。
a=1,b=2,c=3
使用for i=1:10(也可以用indices=1:10(索引); 然后 for i=indices)
实现循环,之后再使用,(逗号)表示下一条语句,(看情况,如果每一条语句都不需要输出则在每条语句后面加上分号;),最后以end结尾。
说明:if语句后的括号可加可不加,但最后要加上end,代表这个部分结束了!
exit,quit函数,退出Octave.
创建一个以 .m 结尾的文件(文件名即为你的函数名),最好用 写字板 或 其他软件来打开它们,不要用记事本,它们会导致行间距很乱。
也可以直接在Octave里面进行函数编写,会更方便一些。
(函数名和文件名一定要一样!!!!)
(需要我们更改Octave的路径,或者将函数文件放入Octave程序所在的文件夹)
costFunctionJ函数代码如下:
function J = costFunctionJ (X,y,theta)
% X is the "Design Matrix" containing our training examples.
% y is hte class labels.
m=size(X,1); % number of training examples
predictions=X*theta; % predictions of hypothesis on all m examples
sqrErrors=(predictions-y).^2; % squared errors
J=1/(2*m)*sum(sqrErrors);
(j=0,因为参数中数据恰好一致,完美拟合)
将theta改为0,0后结果为2.3333,即是(1^2 +2^2 + 3^2)/(2*3)