Octave命令及语法教程3 - 图像绘制与数据可视化

Octave命令及语法教程3 - 图像绘制与数据可视化

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

图像化数据

首先我们用之前学到的知识生成一堆数据,然后设计函数y1=sin(2*pi*4*t),最后用plot绘制图像

plot绘制图像

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

plot绘制图像

plot一张图上绘制两个函数

其中,图像的横轴便是t,纵轴是y1。同样的方式我们也可以绘制y2=cos(2*pi*4*t),而且如果我们希望在一个图上绘制的话,可以用hold on,就像这样:

> y1 = sin(2*pi*4*t);
> y2 = cos(2*pi*4*t);
> plot(t,y1);
> hold on;
> plot(t,y2);

使用hold on绘制多个图在一个窗口

hold on 就是保留旧的图像,让新的图像在旧的图像上继续绘制。

给图像添加属性

当然,我们可以给它添加颜色,比如红色:

> plot(t,y1)
> hold on;
> plot(t,y2,'r');

然后,我们加上x、y轴的标签:

> xlabel('time');
> ylabel('value');

再加上两条线的名字:

> legend('sin', 'cos')

再加上这个图的标题:

> title('my plot')

保存绘制的图像

最后,我还希望保存这张图:

> cd /Users/vien/MachineLearning/Octave/plot;
> print -dpng 'myPlot.png';

这可能需要一点点时间,取决于你电脑的配置,下面就是最后生成的图,看起来还不错。当然,你也可以保存成别的格式,详情请用help plot查看。

加上label、title等保存的png图片

开启多个窗口

我们发现,窗口的标题是Figure 1,因此我们可以通过用figure给每个窗口标号,从而在新窗口绘制图像而不是覆盖掉之前的窗口。

> figure(1); plot(t,y1);
> figure(2); plot(t,y2);

这样我就会有两个图同时存在了,一个是Figure 1,一个是Figure 2

窗口切分

subplot(1,2,1);

将一个窗口分成1x2的格子,也就是前两个参数,第三个参数是选定第一个格子。

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

窗口切分

改变坐标轴范围

> axis([0.5 1 -1 1])

在之前的窗口,右侧的图像,x轴设置为0.5到1,y轴设置为-1到1。

改变坐标轴范围

关闭与清理

再说个看起来没啥用的东西,我们可以输入close关闭图像窗口,但其实很多人还是习惯点直接那个小叉叉关掉。

clf则是清理当前窗口的图像,然后这个窗口就变成了一个白板。

矩阵可视化

> A = magic(5)
A =

   17   24    1    8   15
   23    5    7   14   16
    4    6   13   20   22
   10   12   19   21    3
   11   18   25    2    9

> imagesc(A)

矩阵可视化

我们再给图像添加一个colorbar,我确实不太会翻译,反正就是下面图像右边的颜色条。然后我们,让它从彩色变成一个黑白的灰度分布图。

> colorbar
> colormap gray

带colorbar的灰度图

不同深浅的颜色,对应不同的值。每个坐标的颜色,都可以在右侧的colorbar找到对应的取值。可以看出来,值越大,颜色越浅,值越小,颜色越深。

广告期间插播电视剧

这里顺带再讲一个语法:

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

这样用逗号隔开跟上面一行一行执行是一样的。之前说过,对于a=1这种,不加;就是赋值顺带输出,加;就是赋值不输出,同样的也可以这样用:

> a = 1, b = 2, c = 3
a =  1
b =  2
c =  3
> a = 1; b = 2; c = 3;
>

可以看到,用,连接是有输出的,用;连接是没有输出的。所以说我们用,或者;可以在一行里执行命令,不过搞清楚他们的区别和特点哦。

猜你喜欢
Octave命令及语法教程2 - 数据的计算(矩阵乘法、求逆、转置)
阅读 4866

上次我们学会了在Octave中如何加载或存储数据、如何把数据存入矩阵,等等。这次我们谈谈Octave中如何对数据进行运算,包括矩阵乘法、求逆矩阵、求矩阵转置,以及一些求和、求最大值等基础函数。

什么是机器学习
阅读 3270

机器学习,简单地说就是拟人。人工智能包含机器学习,而机器学习又包含深度学习。机器学习在我们的生活中有很多的应用,像自动驾驶、搜索引擎、谷歌翻译、垃圾邮件识别等等。

Mac如何安装MATLAB破解版
阅读 6540

MATLAB是matrix和laboratory的组合,意为矩阵实验室,是一款特别好用的数学软件,尤其是对机器学习、人工智能。今天介绍一下Mac下安装MATLAB破解版教程。据说Mac上的matlab更丝滑。

Mac、Windows、Ubuntu(Linux)如何下载安装Octave
阅读 5291

Octave是一款免费的开源软件,或者说Octave是一门科学编程语言。Octave有强大的数学导向语法,内置绘图和可视化工具,可以运行在GNU / Linux,macOS,BSD和Windows上,与Matlab脚本兼容。

Octave命令及语法教程1 - 数据的导入、存储、移动
阅读 5308

这节课的内容 能让你明白 在 Octave 中 怎样用几句简单的命令 很快地对数据进行移动 包括加载和储存一个向量 或矩阵 加载和存储数据 把矩阵放在一起 构建更大的矩阵 用索引对矩阵某个特定元素进行操作等等