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一张图上绘制两个函数
其中,图像的横轴便是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
就是保留旧的图像,让新的图像在旧的图像上继续绘制。
给图像添加属性
当然,我们可以给它添加颜色,比如红色:
> 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
查看。
开启多个窗口
我们发现,窗口的标题是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找到对应的取值。可以看出来,值越大,颜色越浅,值越小,颜色越深。
广告期间插播电视剧
这里顺带再讲一个语法:
> 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 - 数据的计算(矩阵乘法、求逆、转置)
阅读 5519上次我们学会了在Octave中如何加载或存储数据、如何把数据存入矩阵,等等。这次我们谈谈Octave中如何对数据进行运算,包括矩阵乘法、求逆矩阵、求矩阵转置,以及一些求和、求最大值等基础函数。
Octave命令及语法教程1 - 数据的导入、存储、移动
阅读 5754这节课的内容 能让你明白 在 Octave 中 怎样用几句简单的命令 很快地对数据进行移动 包括加载和储存一个向量 或矩阵 加载和存储数据 把矩阵放在一起 构建更大的矩阵 用索引对矩阵某个特定元素进行操作等等
Mac、Windows、Ubuntu(Linux)如何下载安装Octave
阅读 5739Octave是一款免费的开源软件,或者说Octave是一门科学编程语言。Octave有强大的数学导向语法,内置绘图和可视化工具,可以运行在GNU / Linux,macOS,BSD和Windows上,与Matlab脚本兼容。
什么是机器学习
阅读 3575机器学习,简单地说就是拟人。人工智能包含机器学习,而机器学习又包含深度学习。机器学习在我们的生活中有很多的应用,像自动驾驶、搜索引擎、谷歌翻译、垃圾邮件识别等等。
Mac如何安装MATLAB破解版
阅读 6955MATLAB是matrix和laboratory的组合,意为矩阵实验室,是一款特别好用的数学软件,尤其是对机器学习、人工智能。今天介绍一下Mac下安装MATLAB破解版教程。据说Mac上的matlab更丝滑。