当开发学习算法时,每每几个简单的图,可让你更好地理解算法的内容,而且能够完整地检查下算法是否正常运行,是否达到了算法的目的。例如在以前的课程中,学了如何绘制成本函数J(θ),能够帮助确认梯度降低算法是否收敛。一般状况下,绘制数据或学习算法全部输出,也会启发如何改进学习算法。幸运的是,Octave有很是简单的工具用来生成大量不一样的图。当用学习算法时,会发现绘制数据、绘制学习算法等,每每是得到想法来改进算法的重要部分。在这节中,将学习一些Octave的工具来绘制和可视化数据。算法
咱们先来快速生成一些数据用来绘图。咱们设 t = [ 0 : 0.01 : 0.98 ]; ,t是从0到0.98的数列。咱们设 y1 = sin(2*pi*4*t); ,若是想绘制正弦函数,这很容易,咱们只须要输入ploy(t,y1);并回车,就会出现这个图。函数
它的横轴是变量t,纵轴是变量y1(也就是咱们刚刚计算的正弦函数)。工具
让咱们设 y2 = cos(2*pi*4*t) ,若是输入plot(t,y2),那么Ocatve会消除以前的正弦图而且用下面这个余弦图来代替它。学习
纵轴cos(x)从1开始。spa
若是我要同时表示正弦和余弦曲线。要作的就是,输入:plot(t, y1),获得正弦函数。我使用函数hold on,hold on函数的功能是将在旧的图像之上绘制新的图像。我如今绘制y2,输入:plot(t, y2)。我要以不一样的颜色绘制余弦函数,因此我在这里输入'r'(带引号的r)绘制余弦函数,r表示所使用的颜色:plot(t,y2,'r')。3d
再加上命令xlabel('time'),来加上X轴即横轴的标签time,输入ylabel('value'),来加上纵轴的标签value。orm
同时也能够来标记两条函数曲线,用这个命令 legend('sin','cos')就行。将这个图例放在右上方,表示这两条曲线表示的内容。最后输入title('myplot'),在图像的顶部显示这幅图的标题。blog
若是想保存这幅图像,输入print -dpng 'myplot.png'。png是一个图像文件格式,若是你这样作了,它可让你保存为一个文件。咱们还能够改路径,如cd 'C:\Users\ang\Desktop': print -dpng 'myplot.png'。Octave也能够保存为不少其余的格式,若是你想试试其余格式文件,你能够键入help plot。最后,若是你想关掉这个图像,用命令close会让这个图像关掉。开发
Octave也能够为图像标号,输入figure(1); plot(t, y1);将显示第一张图(即正弦函数图)。it
若是想绘制第二个图,能够指定一个不一样的数字编号,输入figure(2); plot(t, y2);将显示第二张图(即余弦函数图)。此时咱们其实有两个图,一个绘制了正弦函数图像,另外一个绘制了余弦函数图像。
接下来说一下subplot命令,咱们要使用subplot(1,2,1),它将图像分为一个1*2的格子,也就是前两个参数的意义,而后它使用第一个格子,也就是最后一个参数1的意思。那么这个图像就显示在左边。
若是输入plot(t,y1),如今这个图显示在第一个格子。
若是输入subplot(1,2,2),那么就要使用第二个格子。输入plot(t,y2);如今y2显示在右边,也就是第二个格子。
最后,能够改变轴的刻度,好比改为[0.5 1 -1 1],输入命令:axis([0.5 1 -1 1])也就是设置了右边图中x轴和y轴的范围。具体来讲就是将右图中x轴的范围调整到0.5至1,y轴的范围调整到-1到1。
你不须要记住全部这些命令,若是你须要改变坐标轴,或者须要知道axis命令,你能够用Octave中用help命令了解细节。
最后,还有几个命令。
clf命令能够清除一幅图像。
让咱们设置A等于一个5×5的magic方阵:
可使用imagesc(A)命令来可视化矩阵,它将会绘制一个5*5的矩阵。它将矩阵绘制成一个5*5的彩色格图,不一样的颜色对应A矩阵中的不一样值。
具体地说,我还可使用函数colorbar,让我用一个更复杂的命令 imagesc(A),colorbar,colormap gray。这其实是在同一时间运行三个命令:运行imagesc,而后运行,colorbar,而后运行colormap gray。它生成了一个颜色图像,一个灰度分布图,并在右边也加入一个颜色条。这个颜色条显示不一样深浅的颜色所对应的值。具体来讲,A矩阵左上角的元素是17,因此对应的是中等的灰度。它右边一个元素是24,对应的就是接近白色的灰度。
咱们还能够绘制一个更大的图像。输入imagesc(magic(15)),colorbar,colormap gray,咱们获得一个15*15的幻方。这将会是一幅15*15的方阵数值的图。
最后再说一个内容。你看到我所作的是使用逗号链接函数调用。若是我输入a=1,b=2,c=3而后回车,这实际上是将三个命令同时执行,或者说是将三个命令一个接一个执行,它将输出全部这三个结果。其实这和a=1;b=2;c=3;很像。可是,若是我用分号,它不会输入任何东西。这里咱们称之为逗号链接的命令或逗号链接的函数调用。用逗号链接是另外一种Octave中更便捷的方式,将多条命令例如imagesc,colorbar,colormap,将这多条命令写在同一行中。