在这一章中我们将学习一些Octave编程语言。我们可以通过它迅速实现我们已经学过的或者后面要学的机器学习算法。
在这节中,我们将学习一系列的Octave的命令。
首先,我们先要打开Ocatve,接着我们输入一些简单的式子,可以看到我们很快就能得到结果。
除了这些,我们还可以做一些逻辑运算。例如,1==2(显然这个结果为假),这里用%表示注释。我们可以看到这里用0表示结果为假。1~=2(1不等于2,结果为真),因此这里返回1。1&&0(逻辑与),结果为0。1||0(逻辑或),结果为1。xor(1,0)(异或运算),结果为1。
我们可以看到前几行开头都是Octave-3.2.4.exe:6>,这是默认的Octave提示符。显示了Octave的版本以及其他信息。如果你不想看到它,你可以用一个隐藏命令PS1('>>');来改变提示字符(两个单引号间是你喜欢的提示符)。然后我们就能看到提示符会改变。
下面要讲的是Octave的变量。
现在写一个变量,对变量赋值为3,并按下回车键,显示变量等于3。
如果你想分配一个变量,但不希望在屏幕上显示结果,你可以在命令后加一个分号,可以抑制打印输出,敲入回车后,不打印任何东西。
接下来举一个字符串的例子:变量b等于字符串"hi"。然后我们输入b,它就会被显示出来。
然后,我们让变量c=(3>=1),显然c的值应该为1。输入c,显示出来c=1。
如果你想打印出或者显示一个变量,有下面几种形式。
(1)如果想显示变量a,我们可以直接输入a。
(2)对于复杂一点的输出,我们可以使用DISP命令。我们可以用它来输出字符串,如disp(sprintf('2 decimals: %0.2f', a)),0.2%f表示只显示小数点后两位数字。
(3)如果输入format long可以显示更多的小数点后位数,format short默认输出少量的小数点后位数。
下面让我们看看向量和矩阵。
让我们建立一个矩阵A,A=[1 2; 3 4; 5 6],这会产生应该三行两列的矩阵A,第一行是1、2,第二行是3、4,第三行是5、6。分号的作用就是矩阵换行到下一行。如下图所示,还有其他的定义方法。
我们可以用同样的方法建立向量。我们可以定义一个行向量V=[1 2 3],还可以定义列向量V=[1;2;3]。
下面介绍的符号。是一些更为有用的符号。V=1: 0.1: 2,这个可以理解成V是一组值,从1开始,增量或者说步长为0.1,直到增加到2。按照这样的方法,V将成为一个行向量。我们还可以让V=1:6,这样V就被赋值为1到6的六个整数。
还有一些方法用来生成矩阵。
ones(2,3)用来生成一个2x3的矩阵,而且矩阵中所有元素都为1。
如果我们设置C = 2*ones(2,3),这样C就是一个全部元素均为2的2x3的矩阵。
我们还可以设w = zeros(1,3),这样就会生成一个1x3的零矩阵。
我们还可以让w = rand(1,3),我们会得到一个1x3的随机矩阵。
如果我们输入rand(3,3),我们会得到一个3x3的矩阵,而且所有的元素都是在0到1之间的随机值。
如果你知道高斯随机变量或者你知道正态分布的随机变量,你就可以设置w = randn(1,3),我们就会得到三个数值。它们服从高斯分布,均值为0,标准差或者方差为1。
我们还可以设置更复杂的,如w = -6 + sqrt(10) * (randn(1,10000)),这个会得到一个有10000个元素的向量(如下图所示)。
如果我们现在用hist(w)命令,就会绘制成一个直方图。
最后,再介绍一种生成矩阵的特殊命令。
eye表示生成单位矩阵。如eye(4),就是一个4x4的单位矩阵。
如果对于命令不清楚的话可以使用帮助命令help。如help eye,它会显示单位矩阵的帮助函数。
这些只是一些简单的命令。在后面的课程中,会讲解更多复杂的命令和数据处理方法,并开始用Octave处理数据。