Octave命令及语法教程1 - 数据的导入、存储、移动
今天讲一下Octave命令和语法,Octave与MATLAB语法基本一致,学一个即可。
Octave基础
关于Octave的安装以及一些基础的命令的语法在之前已经写过,参考:Octave安装与使用。
Octave命令与语法
先插播个小技巧,如果你不喜欢原来的Octave-版本号
这种东西,可以通过如下命令改成任意你喜欢的:
octave:3> PS1('> ')
>
或者皮一下:
> PS1('我超帅> ')
我超帅>
我还是选择不皮,毕竟帅的低调。
size()
size()
:返回矩阵的‘尺寸‘,实际是返回一个一行两列的矩阵,第一个元素表示行,第二个元素表示列,例如下面的A矩阵:
> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
> size(A)
ans =
3 2
当然,size()
还可以有第二个参数,这个看一下例子你就明白了,其实就是1
返回行数,2
返回列数。
> size(A,1)
ans = 3
> size(A,2)
ans = 2
length()
length()
:返回矩阵最大维度的大小。
> v = [1 2 3 4]
v =
1 2 3 4
> length(v)
ans = 4
上面的参数是个向量,如果是个矩阵,我们以上面提到的A矩阵(3x2)为例看一下:
> length(A)
ans = 3
可以看出,length()
返回行数列数中最大的那个,因此,length()
多用于向量。
加载训练样本数据
这里可以像Linux命令行一样使用cd
,ls
,pwd
等命令。首先我们去到我们的数据目录:
> cd /Users/vien/MachineLearning/Octave
> ls
sample.dat
然后用load
来加载数据
> load sample.dat
或
> load('sample.dat')
who & whos
那引入了怎么查看呢?这里就需要用到who
了,这个命令是查看当前Octave存储的变量
> who
Variables in the current scope:
A ans sample v
可以看到,我们之前创建的A
和v
,而sample
就是我们刚刚导入的数据了,来看一下:
> sample
sample =
1024 1
2322 3
4353 2
既然刚刚谈到了who
,那就不得不再提一下whos
了,这个会显示所有变量的详细信息,而不再仅仅是名字:
> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
ans 1x1 8 double
sample 3x2 48 double
v 1x4 32 double
Total is 17 elements using 136 bytes
clear
clear
是用来清除变量的,比如我们刚刚加载的sample
> who
Variables in the current scope:
A ans sample v
> clear sample
> who
Variables in the current scope:
A ans v
当然,如果不加变量名,直接clear
也是可以的,不过这样就清理了所有的变量。
(x:x)-部分截取
> w = [1;2;3;4;5;6]
w =
1
2
3
4
5
6
> v = w(1:3)
v =
1
2
3
可以看到,这个就像python中的数组或者字符串截取一样,:
前后分别是开始和结束的位置,我们把w
向量取第一到第三个元素然后赋值给v
。
数据导出存储
上面谈到了导入,现在说一下导出,导出主要用到save
。
> save hello.mat v
> ls
hello.mat sample.dat
>
三部分组成,首先是save
,然后第二个跟文件名,第三个是变量名。我们再将它读进来:
> clear
> who
> load hello.mat
> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
v 3x1 24 double
Total is 3 elements using 24 bytes
>
先清空,避免之前的干扰我们判断是否为刚刚导入的。
这里可能有疑问,刚刚导入是.dat
,而导出却用了.mat
,刚刚导入变量名跟文件名相同,这导出.mat
后再导入居然是导出时候的变量名v
。其实这两个文件是不一样的,回到我的命令行(非Octave)下,我们去查看一下刚刚那两个文件。
➜ Octave pwd
/Users/vien/MachineLearning/Octave
➜ Octave ll
total 16
-rw-r--r--@ 1 vien staff 145 May 5 11:09 hello.mat
-rw-r--r-- 1 vien staff 21 May 5 10:51 sample.dat
➜ Octave cat hello.mat
# Created by Octave 5.1.0, Sun May 05 11:09:00 2019 CST <vien@Vien-MacBook-Pro.local>
# name: v
# type: matrix
# rows: 3
# columns: 1
1
2
3
➜ Octave cat sample.dat
1024 1
2322 3
4353 2
➜ Octave
我们明显可以看到,.dat
文件只有一堆排列整齐的数据,而.mat
还附加了一些别的信息,比如变量名、类型、行数、列数等信息。其实,这个后缀是什么不重要,只是save
命令就是会附加一些信息,你也可以叫.dat
。
当然,我们也可以直接存成普通的形式:
> save hello.txt v -ascii
再到Mac命令行下来看一下:
➜ Octave cat hello.txt
1.00000000e+00
2.00000000e+00
3.00000000e+00
存成了科学计数法,但很显然,附加的信息没有了。再提醒一下,文件名后缀不重要,之所以存成了这种形式是因为后面加了-ascii
。
元素索引
> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
> A(3,2)
ans = 6
上面这个就是选取A矩阵第三行第二列的元素,这个不过多解释了。我们也可以选择一整行或者一整列,像下面这样:
> A(2,:)
ans =
3 4
> A(:,2)
ans =
2
4
6
:
表示当前行或者列所有元素,当然,有的小伙伴就开始调皮了,你要非要这么玩,也没人拦你,只是比只输入A复杂了一点,但结果跟只输入A一样:
> A(:,:)
ans =
1 2
3 4
5 6
还有的小伙伴不走寻常路:我只要1、3行。也是可以的:
> A([1 3], :)
ans =
1 2
5 6
可以看出来,Octave还是很强的,满足你各种无理的要求,就是这么宠着你、惯着你。
元素赋值
> A(:,2) = [10; 11; 12]
A =
1 10
3 11
5 12
> A(3,2) = 0
A =
1 10
3 11
5 0
还可以这样玩,新加一列:
> A = [A, [100; 101; 102]]
A =
1 10 100
3 11 101
5 0 102
A(:)
可以将所有的元素放到一列:
> A(:)
ans =
1
3
5
10
11
0
100
101
102
还可以将矩阵拼接
> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
> B = [11 12; 13 14; 15 16]
B =
11 12
13 14
15 16
> C = [A B]
C =
1 2 11 12
3 4 13 14
5 6 15 16
> C = [A; B]
C =
1 2
3 4
5 6
11 12
13 14
15 16
其中C = [A B]
也可以写成 C = [A, B]
,结果是一样的。
总结
希望这节课的内容 能让你明白 在 Octave 中 怎样用几句简单的命令 很快地对数据进行移动 包括加载和储存一个向量 或矩阵 加载和存储数据 把矩阵放在一起 构建更大的矩阵 用索引对矩阵某个特定元素进行操作等等
猜你喜欢
什么是机器学习
阅读 3861机器学习,简单地说就是拟人。人工智能包含机器学习,而机器学习又包含深度学习。机器学习在我们的生活中有很多的应用,像自动驾驶、搜索引擎、谷歌翻译、垃圾邮件识别等等。
Octave命令及语法教程3 - 图像绘制与数据可视化
阅读 4777当开发学习算法时 图像可以让你更好地理解算法的内容 检查算法是否正常运行 是否达到了算法的目的 例如绘制损失函数J(θ)可以帮助确认梯度下降算法是否收敛 Octave有非常简单的工具用来生成大量不同的图
Mac如何安装MATLAB破解版
阅读 7304MATLAB是matrix和laboratory的组合,意为矩阵实验室,是一款特别好用的数学软件,尤其是对机器学习、人工智能。今天介绍一下Mac下安装MATLAB破解版教程。据说Mac上的matlab更丝滑。
Mac、Windows、Ubuntu(Linux)如何下载安装Octave
阅读 6172Octave是一款免费的开源软件,或者说Octave是一门科学编程语言。Octave有强大的数学导向语法,内置绘图和可视化工具,可以运行在GNU / Linux,macOS,BSD和Windows上,与Matlab脚本兼容。
Octave命令及语法教程2 - 数据的计算(矩阵乘法、求逆、转置)
阅读 5869上次我们学会了在Octave中如何加载或存储数据、如何把数据存入矩阵,等等。这次我们谈谈Octave中如何对数据进行运算,包括矩阵乘法、求逆矩阵、求矩阵转置,以及一些求和、求最大值等基础函数。