0%

Machine-Learning-Note3

###Octave的使用

更改提示符

1
2
octave:11> PS1('>>')
>>

添加分号抑制输出

查看帮助:

1
>> help eye

构造10000个随机数并绘制高斯分布:

1
2
>> w=randn(1,10000);
>> hist(w,50)

圆周率:pi ,常数:e

格式化输出

矩阵

横向量:

1
>> v=[1,2,3]

列向量:

1
>> v=[1;2;3]

2*3,所有元素均为1:

1
ones(2,3)

1*3,所有元素均为0:

1
w=zeros(1,3)

5*5单位矩阵:

1
I=eye(5)

3*3高斯随机数矩阵:

1
rand(3,3)

矩阵数乘:

1
C=2*ones(2,3)

读取A[3,2]:

1
>> A(3,2)

读取矩阵A第2列所有元素:

1
>> A(:,2)

读取矩阵A第1行和第3行所有元素:

1
>> A([1 3],:)

将A第二列替换为[10;11;12]:

1
>> A(:,2)=[10;11;12]

在A的最后加上一列:

1
>> A=[A,[100,101,102]]

将A所有的元素合并成一个列向量:

1
>> A(:)

两个矩阵列合并:

1
>> C=[A B]

两个矩阵行合并

1
>> D=[A;B]

移动数据

所用到的数据: featuresX.dat, priceY.dat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>> cd E:\桌面 %Octave中不能输入中文,在左上窗口双击打开
>> load featuresX.dat
>> load('priceY.dat')
>> who %使用who命令显示当前所有变量,使用whos查看变量更详细的信息
>> featuresX %展示数据
featuresX =

2104 3
1600 3
2400 3
1416 2
3000 4
......
>> size(featuresX)
ans =

27 2
>> v=featuresX(1:5)
v =

2104 1600 2400 1416 3000

>> save hello.mat v %二进制方式存储数据
>> save hello.txt v -ascii %存储数据
>>clear %清空所有变量
数据的计算
1
2
3
4
5
6
7
8
%各种矩阵的运算
>> A*B
>> A.*b
>> A.^2
>> 1 ./A
>> log(A)
>> exp(A)
>> -A

A中每个元素加1

1
2
3
>> A+ones(size(A))
%或者:
>> A+1

矩阵转置

1
>> A'

最值,比较大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>> A=[1 3 0.5 100]
A =

1.00000 3.00000 0.50000 100.00000

>> [val ind]=max(A)
val = 100
ind = 4
>> [val]=min(A)
val = 0.50000
>> A>2
ans =

0 1 0 1

查找特定元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
>> A=[1 3 5;6 8 9]
A =

1 3 5
6 8 9

>> find(a>3)
error: 'a' undefined near line 1 column 6
>> find(A>3)
ans =

2
4
5
6

>> [r c]=find(A>=2)
r =

2
1
2
1
2

c =

1
2
2
3
3

生成任意行、列、对角线和相等的矩阵:

1
2
3
4
5
6
>> magic(3)
ans =

8 1 6
3 5 7
4 9 2

列向量求和

1
2
3
4
>> sum(A)
ans =

7 11 14
1
2
>> floor(a)%向下取整
>> ceil(a)%向上取整

最值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
>> 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

>> B=[3 1;4 6;2 9]
B =

3 1
4 6
2 9

>> max(A,B)
%构造一个由A,B两个矩阵中对应位置较大的数组成的矩阵
ans =

3 2
4 6
5 9

>> max(A,[],1)%取出矩阵每列最大的元素
ans =

5 6

>> max(A,[],2)%取出矩阵每列最大的元素
ans =

2
4
6
%获取矩阵中最大元素两种方式
>> max(max(A))
ans = 6
>> max(A(:))
ans = 6
>> flipud(A)%矩阵上下翻转
ans =

5 6
3 4
1 2
>> pinv(A)%矩阵的逆
ans =

-1.33333 -0.33333 0.66667
1.08333 0.33333 -0.41667
绘图

(将函数画在同一图中、添加坐标轴说明、图示、存储图像、同一窗口不同位置显示两个图像、坐标轴刻度)

将矩阵可视化

1
>> imagesc(magic(15))
控制语句

循环语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>> for i=1:10,
v(i)=i^2;
end;
>> v
v =

1 4 9 16 25 36 49 64 81 100

>> i=1;
>> while i<=10,
v(i)=sqrt(v(i));
i=i+1;
end;
>> v
v =

1 2 3 4 5 6 7 8 9 10

定义函数

1
2
3
>> [y1,y2]=squareAndcube(5)
y1 = 25
y2 = 125