Octave作为类似Matlab和Python等,很方便对数据进行操作。是一个极其便捷且快速进行机器学习模型建立的IDE。本文主要以吴恩达《机器学习》课程学习笔记为主总结的Octave基础操作,课程地址:http://study.163.com/course/courseMain.htm?courseId=1004570029
1.更改标志,PS1括号中是什么,以后用的标志每行标志号就是什么
>>PS1('>')
>
2.不加分号,回车会显示结果,末尾加分号,不显示结果。disp(a);输出
>>a=3
a = 3
>>a=3;
>>disp(a)
3
>>disp(a);
3
3.%是注释,printf输出 (此处不明白为何输出会有16)
>>a=pi; %输出a
>>a
a = 3.1416
>>disp(printf(' 2 decimads:%0.2f',a))
2 decimads:3.14 16
>>
4.矩阵 / 行向量 / 列向量
%矩阵
>>A=[1 2;3 4;5 6]
A =
1 2
3 4
5 6
>>A=[1 2;
3 4;
5 6]
A =
1 2
3 4
5 6
%行向量
륄>>v=[1 2 3]
v =
1 2 3
%列向量
>>v=[1;2;3]
v =
1
2
3
5.从1~2每隔0.1显示一个数
>>v=1:0.1:2
v =
1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000
6.1~6赋值
>>v=1:6
v =
1 2 3 4 5 6
7.全1矩阵 ones,零矩阵z eros,随机数矩阵 rand, 单位矩阵 eye
>>ones(2,3)
ans =
1 1 1
1 1 1
>>c=2*ones(2,3)
c =
2 2 2
2 2 2
>>c=[2 2 2;2 2 2]
c =
2 2 2
2 2 2
>>w=ones(1,3)
w =
1 1 1
>>w=zeros(1,3)
w =
0 0 0
>>w=rand(1,3)
w =
0.620290 0.510380 0.048429
>>w=rand(2,2)
w =
0.89532 0.10284
0.47973 0.68465
>>eye(4)
ans =
Diagonal Matrix
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
8.绘制成直方图 hist(w,50) 数据w,绘制50条(直方图条数)
>>w=rand(1,3)
w =
0.33843 0.76924 0.75417
>>hist(w)
9.帮助(函数查看)help 命令
%查看函数 eye
>>help eye
'eye' is a built-in function from the file libinterp/corefcn/data.cc
-- eye (N)
-- eye (M, N)
-- eye ([M N])
-- eye (..., CLASS)
Return an identity matrix.
If invoked with a single scalar argument N, return a square NxN
identity matrix.
If supplied two scalar arguments (M, N), 'eye' takes them to be the
number of rows and columns. If given a vector with two elements,
'eye' uses the values of the elements as the number of rows and
columns, respectively. For example:
eye (3)
=> 1 0 0
0 1 0
0 0 1
The following expressions all produce the same result:
eye (2)
==
eye (2, 2)
==
eye (size ([1, 2; 3, 4]))
The optional argument CLASS, allows 'eye' to return an array of the
-- less -- (f)orward, (b)ack, (q)uit
val = zeros (n,m, "uint8")
-- less -- (f)orward, (b)ack, (q)uit
Calling 'eye' with no arguments is equivalent to calling it with an
argument of 1. Any negative dimensions are treated as zero. These
-- less -- (f)orward, (b)ack, (q)uit
1.求矩阵维数 size ,返回第一维大小size(A,1),返回第二维大小size(A,2) 返回矩阵最大维度 length(A),返回向量长度length(v)
>>se=size(A)
se =
3 2
>>size(A,1)
ans = 3
>>size(A,2)
ans = 2
>>length(A)
ans = 3
>>v
v =
1 2 3 4 5 6
>>length(v)
ans = 6
2.加载系统文件。查看默认路径 pwd 。更改路径 cd’’ ,who显示目前所以变量,load的两种方式加载.dat文件。文件名为变量名。如下,第一次加载data.dat,用who列出变量中有data变量。然后导入data_c.dat文件,再用who列出所以变量中增加了data_c变量。whos是更详细的变量信息。v=data(1:10将data的前十个元素给了v,最后保存hello.mat
>>pwd
ans = C:\Users\75690
>>cd 'E:\Desktop'
>>pwd
ans = E:\Desktop
>>load data.dat
>>who
Variables in the current scope:
A a ans c data se v w
>>load('data_c.dat')
>>who
Variables in the current scope:
A a ans c data data_c se v w
>>whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
a 1x1 8 double
ans 1x10 10 char
c 2x3 48 double
data 16x1 128 double
data_c 9x3 216 double
se 1x2 16 double
v 1x6 24 double
w 1x3 24 double
Total is 77 elements using 522 bytes
>>v=data(1:10) %变量data的前十个数据赋值给向量v
v =
345
242
35
123
2454
664
46
46
567
>>save hello.mat v;
3.clear清除工作空间所有变量
4.索引查找元素
>> A=[1 2;3 4;5 6]
A =
1 2
3 4
5 6
>> A(3,2) %矩阵A三行二列的元素 6
ans = 6
>> A(2,:) %第二行所有元素
ans =
3 4
>> A([1,3],:) %第1和第3列所有元素
ans =
1 2
5 6
>> A(:,2)=[10;11;12] %给A的第二列赋值
A =
1 10
3 11
5 12
5.矩阵合并 [A B]左右合并。[A;B]上下合并
>> A=[A,[100;101;102]] %给A的右边附加一列新的列向量
A =
1 10 100
3 11 101
5 12 102
>> A=[1 2;3 4;5 6] %重新给A赋值
A =
1 2
3 4
5 6
>> B=[11 12;21 22;31 32] %定义B
B =
11 12
21 22
31 32
>> C=[A B] %左右合并
C =
1 2 11 12
3 4 21 22
5 6 31 32
>> c=[A;B] %上下合并
c =
1 2
3 4
5 6
11 12
21 22
31 32
以下为基本数据运算方法( . 是对元素进行运算)
>> A=[1 2;3 4;5 6];
>> C=[1 2 3;4 5 6];
>> A*C %矩阵乘法
ans =
9 12 15
19 26 33
29 40 51
>> B=[12 13;21 23;31 33];
>>> A.*B %对应元素相乘
ans =
12 26
63 92
155 19
>> A.^2 %A对应元素求平方
ans =
1 4
9 16
25 36
>> v=[1 2 3 4]
v =
1 2 3 4
>> 1./v %求倒数
ans =
1.00000 0.50000 0.33333 0.25000
>> log(v) %求log
ans =
0.00000 0.69315 1.09861 1.38629
>> exp(v) %以e为底,以v中元素为指数的幂运算
ans =
2.7183 7.3891 20.0855 54.5982
>> abs(v) %所有元素的绝对值
ans =
1 2 3 4
>> -v %相当于求 -1*v
ans =
-1 -2 -3 -4
>> v=[1;-2;4;9];
>> v+ones(length(v),1) %技巧性:给每个元素加1
ans =
2
-1
5
10
>> A
A =
1 2
3 4
5 6
>> A' %计算A的转置
ans =
1 3 5
2 4 6
>> val=max(v) %返回向量v最大元素
val = 9
>> [val,ind]=max(v) %返回向量v最大元素及最大元素的索引
val = 9
ind = 4
>> max(A) %返回矩阵A每一列的最大值
ans =
5 6
>> a=[1 15 2 0.5];
>> a<3 %a中小于3.则返回1,返回0为否
ans =
1 0 1 1
>> find(a<3) %找到小于3的值返回索引号
ans =
1 3 4
>> A=magic(3) %magic返回一种幻方矩阵(所有行所有列,对角线元素相加值相同)
A =
8 1 6
3 5 7
4 9 2
>> [r,c]=find(A>=7)
r = %r行c列(索引)
1
3
2
c =
1
2
3
>> sum(a) %a中所有元素求和
ans = 18.500
>> prod(a) %所有元素乘积
ans = 15
>> floor(a) %向下取整
ans =
1 15 2 0
>> ceil(a) %向上取整
ans =
1 15 2 1
ꥩ>> max(A,[],1) %从A的第一维取第一维(列)最大的
ans =
8 9 7
>> max(A,[],2) %从第二位(行)取最大的
ans =
8
7
9
>> max(max(A)) %求矩阵A最大值
ans = 9
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
>> flipud(eye(3)) %flipud()矩阵垂直翻转
ans =
0 0 1
0 1 0
1 0 0
>> pinv(A) %矩阵求逆(其实计算的是伪逆)
ans =
0.147222 -0.144444 0.063889
-0.061111 0.022222 0.105556
-0.019444 0.188889 -0.102778