Coursera机器学习笔记 第2周 第五章 Octave/Matlab教程(一)

第五章 Octave/Matlab教程(Octave/Matlab Tutorial)

第1节 Octave/Matlab教程(Octave/Matlab Tutorial)

5.1 基本操作

参考视频 : 5 - 1 - Basic Operations (14 min).mkv

1.预备知识点:

  • Octave是一种编程语言,类似Matlab。它是一种高级语言,很容易掌握。
  • Octave是一种原始语言(prototyping language),使用Octave你可以快速地实现算法,然后可以再根据需要用C++或Java实现。
  • Matlab比Octave强大,本门课程也可以使用Matlab。
  • 如果你会Python、NumPy或R语言,最好暂时放弃一下,Ng建议在这门课中使用Octave来写程序。提交作业也是使用Octave的。

2.启动Octave
Octave启动

(1)基本数学运算(输入代码,自行查看效果)

5+6 // ans = 11
3-2 // ans = 1
5*8 // ans = 40
1/2 // ans = 0.50000
2^6 // ans = 64

(2)基本逻辑运算

1==2 // ans = 0 
1~=2 // ans = 1
8>1 && 0 // ans = 0
9>1 || 0 // ans = 1
xor(0,1) // ans = 1(异或运算)
10>xor(0,1) // ans = 1

(3)修改Octave提示符

PS1('>> ');

(4)比较下列两行命令

a=3
a=3;

如果你想分配一个变量,但不希望在屏幕上显示结果,你可以在命令后加一个分号,可以抑制打印输出,敲入回车后,不打印任何东西。
(5)练习(依次输入)

b = 'hi';
b
c = (3>=1);
c
a = pi;
a
disp(a)
disp(sprintf('2 decimals: %0.2f', a))//这是一种旧风格的C语言语法
format long
a
format short
a

(6)向量和矩阵

A = [1 2; 3 4; 5 6]
v1 = [1 2 3]
v2 = [1; 2; 3]
V = 1:0.2:2 // 有用 起始:增量:终止
V = 1:6
ones(2,3)  // 2行3列
zeros(1,3) // 1行3列
rand(3,3) // 随机值矩阵,数值介于0-1之间 
w = rand(1,3)
w = -6 + sqrt(10)*randn(1,10000))
hist(w) // 绘制直方图
hist(w,50)
I = eye(6) // 单位矩阵
help eye // 帮助文档
help rand
help help

以上是Octave的基本操作,多多练习一下。

5.2 移动数据

参考视频 : 5 - 2 - Moving Data Around (16 min).mkv

问题:

  • 如何把数据加载到Octave中?
  • 怎样把数据存入一个矩阵?
  • 如何保存计算结果?
  • 如何移动这些数据

基本命令:

A = [1 2; 3 4; 5 6];
size(A) // ans = 3 2(返回矩阵A的大小)
sz = size(A); // size(A)返回结果其实就是一个矩阵
size(sz) // ans = 1 2(返回sz是一个1行2列的矩阵)
size(A,1) // ans = 3(返回行数)
size(A,2) // ans = 2(返回列数)
length(A) // ans = 2(返回行列最大的那个数)
length([1;2;3;4;5]) // ans = 5(一般用在向量上)

当我们打开Octave时,我们通常已经在在一个默认路径中,这个路径时Octave的安装路径。

pwd // 显示当前路径
cd '路径地址' // 改变路径
ls // 列出当前路径下的文件
featureX.dat // 加载featureX.dat(直接键入文件名)
priceY.dat
load('featureX.dat') // 加载featureX.dat
who // 显示变量
whos // 显示变量详细信息
clear X // 清除变量X
clears // 清除所有变量)

数据保存和读取操作:

V = [1;2;3;4;5;6;7;8;9;10];
save hello.mat V // 保存变量V到hello.mat文件中
clears
load('hello.mat') // 重新载入变量V
save hello.txt v -ascii // 把数据保存成一个文本文档

矩阵的索引操作:

A = [1 2; 3 4; 5 6];
A(3,2) // ans = 6 返回A{32}
A(2,:) // ans = 3 4 返回第2行
A(:,2) // ans = [2;4;6] 返回第2列
A([1 3],:) // ans = [1 2; 5 6] 返回第1和3行
A(:,2) = [10;11;12] // 给A的第2列赋值
A = [A, [100;101;102]] // 给A增加一列
A(:) // 生成单独的列向量
A = [1 2; 3 4; 5 6]
B = [11 12; 13 14; 15 16]
C = [A B] // 左右连接矩阵A和B
C = [A;B] // 上下连接矩阵A和B

通过几句简单的命令,Octave能够很方便地帮助我们组合复杂的矩阵以及对数据进行移动,好好练习一下这些命令。

5.3 计算数据

参考视频 : 5 - 3 - Computing on Data (13 min).mkv

矩阵计算:A(3*2) B(3*2) C(2*2)

A = [1 2;3 4;5 6];
B = [11 12;13 14;15 16];
C = [1 1;2 2]
A*C // 矩阵相乘
A.*B // 元素位运算:对应元素相乘
A.^2 // 将A中每一个元素平方
V = [1;2;3]'
1./V // ans=[1;0.5000;0.3333] 得到每一个元素的倒数
log(V) // 求自然对数
exp(V) // 求e的幂次运算
abs([1;-2;-3]) // 求绝对值运算
v+1 // 加一运算

其他:

A = magic(3)
[r,c] = find(A>=7)
a = [1.0 1.1 1.9 2 2.5 2.7];
a
sum(a) // 求和运算
prod(a) // 求积运算
floor(a) // 返回小于等于a的最大整数 可以理解为去除小数部分
ceil(a) // 返回大于等于a的最小整数 
round(a) // 四舍五入
max(rand(3),rand(3)) // 逐元素比较两个3*3的矩阵,取最大值返回一个3*3的矩阵
max(A,[],1) // 返回每一列的最大值
max(A,[],2) // 返回每一行的最大值
max(max(A)) // 返回最大值
A = magic(9)
sum(A,1) // 求A每一列的总和
sum(A,2) // 求A每一行的最值
sum(sum(A)) //矩阵元素之和
flipup/flipud(A) //上下翻转矩阵
pinv(A) // 求矩阵的逆

如何对矩阵中的数字进行各种操作,在运行完某个学习算法之后,通常最有用的事情是看看你的结果,或者说让你的结果可视化。接下来,我们将学习如何很快地画图。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值