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,都自带各种线性代数库。这些库通过了高度优化,容易浏览和获取。如果咱们在实现机器学习算法时,能好好利用这些库,而不是本人重构函数,不仅能进步工作效率,而且能放慢算法运行速度,用更少的代码实现更多的性能
- 下图是两种写法,显然后者简略,这充沛表明向量化实现简略无效,因而向量化思维是重要的