Coursera机器学习笔记(四) - Octave教程

Coursera机器学习笔记(四) - Octave教程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWl0miUH-1588214218485)(http://7xrrje.com1.z0.glb.clouddn.com/screenshot_63.png)]


##基本操作##

四则运算
octave:1> 5+6
ans =  11
octave:2> 3-2
ans =  1
octave:3> 5*8
ans =  40
octave:4> 1/2
ans =  0.50000
逻辑运算
octave:6> 1 == 2
ans = 0
octave:7> 1 ~= 2
ans =  1
octave:8> 1 && 0
ans = 0
octave:9> 1 || 0
ans =  1
octave:10> xor(1,0)
ans =  1
其他

更改提示符

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

添加分号可抑制输出:

>> a = 1
a =  1
>> a = 1;
>>

圆周率 π \pi π:

>> a = pi
a =  3.1416

常数 e e e:

>> e
ans =  2.7183

格式化输出:

>> disp(sprintf('6 decimals: %0.6f', a))
6 decimals: 3.141593
>> disp(sprintf('6 decimals: %0.2f', a))
6 decimals: 3.14
>> format long 
>> a
a =  3.14159265358979
>> format short
>> a
a =  3.1416

矩阵

构造一个矩阵,方式一:

>> 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

从1到2,每次递增0.1:

>> v = 1:0.1:2
v =

 Columns 1 through 5:

    1.0000    1.1000    1.2000    1.3000    1.4000

 Columns 6 through 10:

    1.5000    1.6000    1.7000    1.8000    1.9000

 Column 11:

    2.0000

从1到6,每次递增1(默认):

>> v = 1:6
v =

   1   2   3   4   5   6

所有元素均为1:

>> ones(2, 3)
ans =

   1   1   1
   1   1   1

每个元素乘以2:

>> C = 2*ones(2, 3)
C =

   2   2   2
   2   2   2

高斯随机数:

>> rand(3, 3)
ans =

   0.751588   0.906707   0.081204
   0.411613   0.457779   0.882052
   0.622524   0.774499   0.811092

所有元素均为0:

>> w = zeros(1, 3)
w =

   0   0   0

单位阵:

>> I = eye(5)
I =

Diagonal Matrix

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1
   

A =

   1   2
   3   4
   5   6

读取矩阵A第三行第二列的元素:

>> A(3, 2)
ans =  6

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

>> A(:,2)
ans =

   2
   4
   6

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

>> A(2,:)
ans =

   3   4

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

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

   1   2
   5   6

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

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

    1   10
    3   11
    5   12

在A的最后加上一列:

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

     1    10   100
     3    11   101
     5    12   102

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

>> A(:)
ans =

     1
     3
     5
    10
    11
    12
   100
   101
   102

两个矩阵的合并(列合并):

>> A = [1 2; 3 4; 5 6]
A =

   1   2
   3   4
   5   6

>> B = [7 8; 9 10; 11 12]
B =

    7    8
    9   10
   11   12

>> C = [A B]
C =

    1    2    7    8
    3    4    9   10
    5    6   11   12

两个矩阵的合并(行合并):

>> D = [A;B]
D =

    1    2
    3    4
    5    6
    7    8
    9   10
   11   12

查看帮助:

>> help eye

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0eBj7mS-1588214218487)(http://7xrrje.com1.z0.glb.clouddn.com/screenshot_598.png?imageMogr/v2/thumbnail/!45p)]

构造10000个随机数,并绘制出图形(高斯分布):

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WMpWc8Ut-1588214218493)(http://7xrrje.com1.z0.glb.clouddn.com/GaussianDistribution.png)]


数据的读取与存储

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

读取数据
% 找到文件所在目录:
>> cd Desktop/
>> cd 'Machine Learning/'
>> ls
featuresX.dat	priceY.dat

数据如下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QRwp02tk-1588214218497)(http://7xrrje.com1.z0.glb.clouddn.com/screenshot_599.png?imageMogr/v2/thumbnail/!45p)]

读取数据:

% 方式一:
>> load featuresX.dat
>> load priceY.dat
% 方式二:
>> load('featuresX.dat')
>> load('priceY.dat')

使用who命令显示当前所有变量:

>> who
Variables in the current scope:

A          a          featuresX  v          y
C          ans        priceY     w
I          c          sz         x

可以看到,刚才导入的数据已经在变量featuresX和priceY中了。
展示数据:

>> featuresX
featuresX =

   2104      3
   1600      3
   2400      3
   1416      2
   3000      4
   1985      4
   1534      3
    ...        ..

>> size(featuresX)
ans =

   27    2

>> priceY
priceY =

   3999
   3299
   3690
   2320
   5399
   2999
    ...
    
>> size(priceY)
ans =

   27    1

使用whos查看变量更详细的信息:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-24Ad0I60-1588214218498)(http://7xrrje.com1.z0.glb.clouddn.com/screenshot_600.png?imageMogr/v2/thumbnail/!45p)]

使用如下命令用来删除某个变量:

>> clear featuresX
>> whos

这个时候再使用whos查看,发现featuresX已经不见了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C7Wx0HQp-1588214218501)(http://7xrrje.com1.z0.glb.clouddn.com/screenshot_601.png?imageMogr/v2/thumbnail/!45p)]


存储数据

假设我们现在需要取出priceY前十个数据,使用如下命令:

>> v = priceY(1:10)
v =

   3999
   3299
   3690
   2320
   5399
   2999
   3149
   1989
   2120
   2425

该如何存储这十个数据呢?使用save命令:

>> save hello.mat v
>> ls
featuresX.dat	hello.mat	priceY.dat

清空所有变量:

>> clear
>> whos
>> %无任何输出

刚才存储数据是以二进制的形式进行存储,我们也可以使用人能够读懂的形式存储。例如:

>> load hello.mat
>> whos
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  ===== 
        v          10x1                         80  double

Total is 10 elements using 80 bytes

>> v
v =

   3999
   3299
   3690
   2320
   5399
   2999
   3149
   1989
   2120
   2425

>> save hello.txt v -ascii
>> ls
featuresX.dat	hello.mat	hello.txt	priceY.dat

数据的计算

% 各种矩阵运算
>> A * B
>> A .* B
>> A .^ 2
>> 1 ./ A
>> log(A)
>> exp(A)
>> -A

A中的每个元素都加上1:

>> A + ones(size(A))

这样也可以:

>> A + 1

矩阵转置:

>> A'

向量中的最大值:

>> A = [1 3 0.5 10 100]
A =

     1.00000     3.00000     0.50000    10.00000   100.00000

>> [val ind] = max(A)
val =  100
ind =  5

比较大小:

>> A = [1 2; 3 4; 5 6]
A =

   1   2
   3   4
   5   6

>> A > 3
ans =

   0   0
   0   1
   1   

找出向量中特定元素:

>> find(A > 3)
ans =

   3
   5
   6

找出矩阵中特定元素:

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

   2
   3
   2
   3

c =

   1
   1
   2
   2

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

>> magic(3)
ans =

   8   1   6
   3   5   7
   4   9   2

内容太多,就不一个个的打了,想要更清楚的教程,请看原地址;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值