Octave 数据绘制
当开发学习算法时,往往几个简单的图,可以让你更好地理解算法的内容,并且可以完整地检查下算法是否正常运行,是否达到了算法的目的。通常情况下,绘制数据,或学习算法的所有输出也会启发你如何改进你的学习算法。幸运的是,Octave有非常简单的工具来生成大量不同的图。当用学习算法时,发现绘制数据,绘制学习算法等等,对于获得改进算法的主意往往很重要。
首先先来快速生成一些数据用来绘图:
如果想要绘制正弦函数,只需要输入plot(t,y1);
并回车就出现了这个图:
横轴是变量t,纵轴是y1,也就是刚刚赋值的那个正弦函数。
然后设置y2 = cos(2*pi*4*t) 如果又输入plot(t,y2)
Octave将会消除之前的正弦图,并且用这个余弦图来代替。
如果想要同时显示正弦和余弦曲线,要做的就是输入plot(t, y1) 得到正弦函数,然后使用hold on函数,hold on 函数的功能是让Octave在旧的图像上面绘制新的图像。现在再输入plot(t,y2),但这里为了区分,用一种不同的颜色来绘制余弦图像,输入plot(t,y2,'r')
这样就会在现有图像上再绘制余弦函数,而不是替换了现有的图。r表示所使用的颜色(这里r就是red的意思)。
再加上命令xlabel('time') 来加上x轴即横轴的标签。再输入ylabel('value') 来加上纵轴的标签value。
同时也可以用命令legend('sin','cos')标记两条函数曲线,会将这个图例放在右上方表示这两条曲线的内容。
最后再输入title('my plot'),就会在图像的顶部显示这幅图的标题。
最后,如果你想保存这个图像,可以输入print - dpng 'myPlot.png' png是一种图像文件格式,如果你这样输入,它会保存为一个文件。在此之前为了便于查看,先修改一下路径,然后将它打印出来,这需要一点时间,取决于你的Octave的配置设置,可能需要几秒钟。
可以看到这个路径下已经有刚刚保存的图片了,然后打开这张图片:
打开这张图片,可以看到这就是之前的图片,说明这样已经保存好了。
Octave也可以保存为很多其他的格式。如果想试试其他格式的文件,可以键入help plot
最后,如果想要关掉这个图像,可以键入close命令关掉这个图像。
Octave也可以给图像标号:
键入figure(1); plot(t,y1); 就会开始绘制第一个图,即正弦函数图。
如果还想绘制第二个图,可以指定一个不同的数字编号,键入figure(2); plot(t,y2);
现在其实就有两个图了,图1和图2,一个是正弦函数,另一个是余弦函数。
subplot命令:
如果键入subplot(1,2,1);
它会将图像分为一个1x2的格子,也就是前两个参数的意义,然后它会使用第1个格子,也就是最后一个参数1的意思,也就是将图像分成1x2的网格,现在使用第1个格子,如果键入这个命令,那么这个图像显示在左边。
如果键入plot(t,y1)
那么这个图现在就会显示在第1个格子中。
如果键入subplot(1,2,2)
那么就会使用第二个格子。
键入plot(t,y2)
现在图2显示在右边,也就是第二个格子。
最后,你可以改变轴的刻度。比如键入axis[0.5 1 -1 1]
也就是设置了右图中x轴和y轴的范围。具体而言,右图中的横轴范围调整至0.5到1,竖轴的范围调为-1到1。
其实不需要记住所有的这些命令,如果想要改变坐标轴,或者需要知道axis命令。可以使用Octave的help命令了解细节。
最后,还有几个命令。
clf(clears a figure)命令可以清除一副图像,可以看到上一幅图,也就是标号为2的图被清除了。
这有几个小技巧,我们设置A = magic(5),现在A是一个5 x 5的矩阵,有时可以用一个巧妙的方法来可视化矩阵。也就是imagesc(A)
它将绘制1个5 x 5的矩阵,它将矩阵画成了一个5 x 5的彩色格图,不同的颜色对应A矩阵中不同的值。
具体地说,还可以使用colorbar函数,现在来用一个更复杂的命令, imagesc(A),colorbar,colormap gray,这实际上是在同一时间运行三个命令,运行imagesc(A),然后运行colorbar,最后运行colormap gray
它会生成一个颜色图像,一个灰度分布图,并在右边加入一个颜色条,这个颜色条显示了不同深浅的颜色所对应的值。
使用逗号连续调用函数,其实是将这三个命令同时执行,或者说是将这个三个命令一个接一个执行。
例如输入a=1,b=2,c=3
它将输出所有这三个结果
这种其实很像a=1;b=2;c=3; 如果用分号来代替逗号,不会输出任何东西。
这里我们称之为逗号连接的命令或逗号连接的函数调用,只是Octave中另一种更便捷的方式,来将多条命令写在同一行中。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!