Octave语言前言
- 在硅谷的大规模机器学习中,人们一般先用Octave实现算法的基本想法,然后用其他语言(java、C++)改写。这是因为python、numpy、r语言等机器学习语言相对于Octave、matlab更繁琐,先使用octave能够提高效率
Octave命令
https://blog.csdn.net/u011415481/article/details/49969447
https://blog.csdn.net/u011415481/article/details/49969447
数学运算命令
逻辑运算命令
- 不等于符号为
~=
,不是!=
- xor表示异或运算
变量声明命令
- 如果我们希望分配变量,但是不希望在屏幕上显示结果,可以在声明后加分号
;
,抑制打印输出 - disp函数:可以直接将要显示的字符放入括号中
- sprintf函数:其表达格式为:sprint(‘%d’,a);其中%d为数字,%s为字符串
- 但是我们发现,sprintf表达会将字符加上单引号,而用disp表达不会有单引号。
disp(sprintf('%s',name))
联合disp和sprintf函数,可以避免显示字符串时出现单引号
向量矩阵命令
- 声明矩阵时,分号
;
表示矩阵换行 - 声明向量,用空格
;
隔开是列向量 - ones是生成各元素不为0且相等矩阵的快捷方式, zeros是各元素为0的矩阵,eyes构建单位矩阵
- rand生成数值介于0~1之间的随机数;randn高斯随机变量,产生标准正态分布的随机数
- hist绘制直方图命令。将元素平均分到几个等间隔的容器中(默认为10个),并且返回每个容器的元素个数
如何移动、加载、操作数据
- size返回矩阵的行数和列数,可以都返回,也可以选择返回某一个
- length返回向量的维度,若为矩阵,则返回矩阵的最大维度。我们一般不将其用于矩阵
- Octave初始时有一个默认路径,pwd查看;cd ‘’转到其他目录;ls是linux中的命令,查看当下目录的文件
- who查看当前工作空间的所有变量,whos则是详细查看,可以看到数据维度、占用的内存空间、数据类型等
- clear用来清除当前工作空间存储的所有变量,但是若我们先把变量v保存在文件中,在
load hello.mat
后可以直接读取v变量(v变量已经存在了hello.mat文件中) - save命令把数据按照二进制形式压缩存储,而且文件越大,压缩的幅度越大。我们也可以通过把数据用acsii存成文本文档,把数据存成一个人能看懂的形式
数据计算命令
.*
将两个矩阵中相同位置元素相乘 ;./
将矩阵中相同位置元素相除log
是求e的对数,exp
是求e的指数,abs
求绝对值-V
是每个元素去相反数,V+1
是每个元素都+1- max(A) 表示求出A中的最大值,但是需要注意,如果A是矩阵的话,是对每一列求出最大值,如果A是向量,则是直接求出最大值
向量化思想的重要意义
- 无论octave、matlab还是python,都自带各种线性代数库。这些库经过了高度优化,容易阅读和获取。如果我们在实现机器学习算法时,能好好利用这些库,而不是自己重构函数,不仅能提高工作效率,而且能加快算法运行速度,用更少的代码实现更多的功能
- 下图是两种写法,显然后者简单,这充分表明向量化实现简单有效,因此向量化思想是重要的
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。