matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?

众所周知,Matlab在数值分析矩阵计算科学数据可视化以及非线性动态系统的建模和仿真等诸多方面都具有强大功能。而且,论文能否被录用的一个不可缺少的因素就是高颜值的配图。在图像处理这一领域,那matlab可以堪称灰机中的战斗机了,大家都说,只有你想不到,没有它做不到的!

这不,好奇的我赶快去搜索了一下matlab的绘图函数,不搜不知道,搜了之后才更是体验到了它的强大和有趣了呀。除了绘制常见的曲线之外,做动图、小动画那也不在话下的呀。作为新手,这就来和大家共同欣赏一下用matlab绘制出的图片吧。Let’s go~

e28d6bf513c3651afb4f1ad5a3638ec8.png

除了很久之前学的plot函数系列,那些面积图(area()函数和fill()函数),网格图(mesh函数) ,曲面图(surf函数),等高线图等也都通通来一套。

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第1张图片

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第2张图片

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第3张图片

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第4张图片

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第5张图片

绘制等高线图:

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')  %高程值显示   

上面的比较正式的图片欣赏完之后,大家先不要觉得枯燥。接下来我们用自己的一些小想法再无约束地玩一会吧。

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第6张图片

其实这颗红彤彤的爱心,只需多加这样两行代码即可get到啦。

p=patch(isosurface(x,y,z,f,0));
set(p,'FaceColor','r')  

一颗扑通扑通跳动的心,传递出无限的甜蜜,无论远在何处,一定都得收下这份最新鲜的礼物!

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第7张图片

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第8张图片

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第9张图片

这个程序中主要是应用movie函数绘制动画,以及用cla函数擦除当前动画。

fill(x,y,'r');
M(:,i)=getframe; 
f = getframe(gcf);
movie(M,1);

云销雨霁,彩彻区明。落霞与孤鹜齐飞,秋水共长天一色 。每每读到王勃的这两句诗都顿觉画面感满满~那不妨拿matlab试试画个色彩鲜明的彩虹吧。

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第10张图片

看着这绚丽的彩虹:水红、米黄、浅蓝、深赭。微青的天底衬着,像一道迷离的天桥,想是要诱来仙子飞渡?……重要的是,只需要在程序中应用这样两个函数即可搞定。

pause(5);
fill(x,y,'r');
patch(x,y,[1 0.5 0]);

天空中除了靓丽的彩虹,还有那夜空中的烟花,斑斓多彩的,小小的烟火,在夜色中有一种炫目的漂亮。一瞬灿烂,便成为心中最美的永恒。

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第11张图片

看到上面这两幅图,还需要为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的热情!做出更高端大气,颜值爆棚的的论文插图!

想了解更多关于我们金翅创客实验室的内容,请关注微信公众号:金翅创客。

matlab meshc函数_【学生天地】如何用Matlab画出漂亮的插图?_第12张图片

原创声明:本文内容均为本人原创作品。请任何和个人、组织,在经过本人授权后,方可转载。

你可能感兴趣的:(matlab,meshc函数,matlab保存f黑白图片)