GNU Octave绘图数据

GNU Octave绘图数据


当开发学习算法时,往往几个简单的图,可以让你更好地理解算法的内容,并且可以完整地检查下算法是否正常运行,是否达到了算法的目的。
例如可以通过成本函数J(θ)来确认梯度下降算法是否收敛,通常情况下,绘制数据或学习算法所有输出,也会启发你如何改进你的学习算法。幸运的是,Octave有非常简单的工具用来生成大量不同的图,当我用学习算法时,我发现绘制数据、绘制学习算法等,往往是我获得想法来改进算法的重要部分。

下面将介绍一些Octave的工具来绘制和可视化你的数据。

绘制可视化

这里先来快速生成一些数据用来绘制可视化图。

t = [0:0.01:0.98]
t
y1 = sin(2*pi*4*t)

如果想要将上面生成的数据来用来绘制正弦函数,只需要输入plot(t,y1)并回车就可以绘制出下图

plot(t,y1)

其中图中的横轴是t变量,纵轴是y1。

让我们设置y2

y2= cos(2*pi*4*t)
plot(t,y2)

Octave将会消除之前的正弦图,并且用这个余弦图来替代它,这里纵轴cos(x)从1开始。

如果我们要同时表示正弦和余弦曲线。
那么接下来要做的就是,输入:plot(t,y1),得到正弦函数,另外使用函数hold on ,它的功能是将新的图像绘制在旧的之上。
我们现在来绘制y2,输入:plot(t,y2)。

我要以不同的颜色绘制余弦函数,所以在这里输入带引号的r绘制余弦函数,r表示所使用的颜色:plot(t,y2,'r'),再加上命令xlabel(''time),来标记X轴即水平轴,输入ylabel('value'),来标记垂直轴的值。

plot(t,y1)
hold on
plot(t,y2)


标记函数曲线

同时,我们也可以来标记两条函数曲线,用这个命令legend('sin', 'cos')将这个图例放在右上方,表示这两条曲线表示的内容。
最后输入title('myplot'),在图像的顶部显示这幅图的标题。

保存图像

如果你想保存这幅图像,那么可以输入print -dpng 'my plot.png',

print -dpng 'my plot.png'

这将让你按照格式和名称保存一个文件,其中png是一个图像文件格式。实际上,Octave也可以保存为很多其他的格式,你可以输入help plot。
最后如果你想删掉这个图像,可以用命令close会让这个图像关掉。


图像标号

Octave也可以让你为图像标号
输入figure(1);plot(t,y1);将显示第一张图,绘制了变量t y1
输入figure(2);plot(t,y2);将显示第二张图,绘制了变量t y2

其中subplot()命令可以对图像窗口进行划分与合并,例如我们要使用subplot(1,2,1),他将图像分为1*2的格子,也就是前两个参数,然后它使用第一个格子,也就是最后一个参数1的意思。

假设前面的subplot命令已经产生了对应的坐标位置,那么接下来只需要使用plot命令对应地将变量绘制进去就可以了。

subplot(1,2,2)
plot(t,y1)
plot(t,y2)

你还可以改变轴的刻度,比如改成[0.5 1 -1 1],输入命令:axis([0.5 1 -1 1])也就是设置了右边图的x轴和y轴的范围。
具体而言,它将右图中的横轴的范围调整至0.5至1,竖轴的范围为-1到1.

你不需要记住所有的这些命令,如果你需要改变坐标轴,或者需要知道axis命令的用法,可以用Octave中用help命令了解细节。

最后还有几个命令

清除图像

Clf(清除一副图像)

接下来让我们设置A等于一个5x5的magic矩阵:

我们也可以用一个巧妙的方法来可视化矩阵,也就是imagesc(A),它将会绘制一个5*5的矩阵,一个5x5的彩色格图,不同的颜色对应A矩阵中的不同值。

我们还可以使用函数colorbar,使用一个更复杂的命令:

imagesc(A),colorbar,colormap gray

这实际上是在同一时间运行三个命令:运行imagesc,然后运行colorbar,最后运行colormap gray。
它将生成一个颜色图像,一个灰度分布图,并在右边也加入一个颜色条。
所以这个颜色条显示不同深浅的颜色所对应的值。

你可以看到在不同的方格,它对应于一个不同的方格,它对应于一个不同的灰度。

输入下面的命令:

imagesc(magic(15)), colorbar, colormap gray

将会产生一副15x15的magic方阵值的图。

最后,可以总结一下,你会看到上面所做的是使用逗号连接函数调用。
如果输入a=1,b=2,c=3,然后按Enter键,其实这是将三个命令同时执行,或者是将三个命令一个接一个执行,他将输出所有这三个结果。
这很像a=1;b=2;c=3;如果我用分号来代替逗号,则没有输出任何东西。
这里我们称之Wie逗号连接的命令或函数调用。
用逗号连接是另一种Octave中更便捷的方式,将多条命令例如imagesc colorbar colormap,将多条命令写在同一行中。

posted @ 2022-01-29 12:07  Xu_Lin  阅读(500)  评论(0编辑  收藏  举报