众所周知,Matlab在数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多方面都具有强大功能。而且,论文能否被录用的一个不可缺少的因素就是高颜值的配图。
在图像处理这一领域,那matlab可以堪称灰机中的战斗机了,大家都说,只有你想不到,没有它做不到的!
这不,好奇的我赶快去搜索了一下matlab的绘图函数,不搜不知道,搜了之后才更是体验到了它的强大和有趣了呀。除了绘制常见的曲线之外,做动图、小动画那也不在话下的呀。作为新手,这就来和大家共同欣赏一下用matlab绘制出的图片吧。Let’s go~
除了很久之前学的plot函数系列,那些面积图(area()函数和fill()函数),网格图(mesh函数) ,曲面图(surf函数),等高线图等也都通通来一套!
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201204195447897.png
contour(X,Y,Z,-1:0.2:1,'ShowText','on')
或者一次性显示出三维曲面图和二维等高线图:
`h=meshc(X,Y,Z);` %返回值h的第二个参数作为等高线句柄
set(h(2),'LevelList',-1:0.2:1) %句柄操作,设置等高线高程值
set(h(2),'ShowText','on') %高程值显示
上面的比较正式的图片欣赏完之后,大家先不要觉得枯燥啊。接下来我们用自己的一些小想法再无约束地玩一会吧~
其实这颗红彤彤的爱心,只需多加这样两行代码即可get到啦。
p=patch(isosurface(x,y,z,f,0));
set(p,'`FaceColor`','r')
云销雨霁,彩彻区明。落霞与孤鹜齐飞,秋水共长天一色 。每每读到王勃的这两句诗都顿觉画面感满满~那不妨拿matlab试试画个色彩鲜明的彩虹吧。
看着这绚丽的彩虹:水红、米黄、浅蓝、深赭。微青的天底衬着,像一道迷离的天桥,想是要诱来仙子飞渡?……重要的是,只需要在程序中应用这样两个函数即可搞定。
pause(5);
fill(x,y,'r');
patch(x,y,[1 0.5 0]);
天空中除了靓丽的彩虹,还有那夜空中的烟花,斑斓多彩的,小小的烟火,在夜色中有一种炫目的漂亮。一瞬灿烂,便成为心中最美的永恒。
看到上面这两幅图,还需要为matlab做出来的论文中的插图不好看而烦恼吗?不存在的~
这个程序的主要思路是函数模块化,分为定时器模块,发射模块,擦除模块。
最关键的代码放在下面供大家参考:
set(H,'EraseMode','xor','MarkerSize',25)%擦除式绘图,通过在极短的时间内不断更新新点坐标,达到向上运动的效果。
I=timer(‘TimerFcn’,@timer_display2,’StopFcn’,@StopFcn2,’TasksToExecute’,40,’Period’,0.05,’ExecutionMode’,fixedSpacing);
最后,附上前面这些图片中用到的一些函数作为一个文档记录吧
Polarplot()用于绘制极坐标图
Yyaxis()切换左右坐标系
Loglog()绘制双log坐标图
Semilogx(),semilogy()绘制单log坐标图
legend()用于标注图例
area() 绘制曲线与横轴x所围成的面积图。
fill() 绘制曲线所围成多边形的实心图
errorbar(),用来绘制误差带图
histogram()可用于绘制直方图
Plot()用于绘制二维曲线
Scatter()绘制散点图
Stem()用于绘制火柴杆图
Stairs()绘制阶梯图
Mesh(),meshgrid()可用于绘制三维网格图
Surf()可用于绘制三维曲面图
Contour(),contour3()可用于绘制等高线图
View()可用于观察图像视角
Colormap()用于色图条着色
Set()可用于对当前图像进行句柄操作
getframe用于获取当前画面
imwrite()可用于 保存生成的动图
patch()可用于创建一个或多个填充多边形,和fill的功能类似
movie()函数可用于制作动画,以及cla函数可用于擦除当前绘制的图案
pause()和delete()函数结合起来使用也可以做到在视觉上的动态效果从而制作一个小动画
动画保存为gif文件(于安装路径下)
[A,map] = rgb2ind(frame2im(getframe),256);%getframe获取当前画面
imwrite(A,map,'filename.gif','LoopCount',inf,'DelayTime',0.1);
for idx = 2:length(t)
h.XData(idx) = x(idx);
h.YData(idx) = y(idx);
drawnow
[A,map] = rgb2ind(frame2im(getframe),256); imwrite(A,map,'filename.gif','WriteMode','append','DelayTime',0.1);
end
当然,对于matlab强大的功能来讲,这只是冰山一角啦。不过,通过绘制这些图画,可以激发我们进一步学习和探索matlab的热情!做出更高端大气,颜值爆棚的的论文插图!