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中另一种更便捷的方式,来将多条命令写在同一行中。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值