《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!

随着网剧《隐秘的角落》的热播,让法国数学家笛卡尔重回视野,他的心形线也在剧情中抢尽风头。

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图1

可是张东升老师把“心形线”画错了喔。首先让我们熟悉一下笛卡尔和瑞典公主的浪漫爱情故事。
相传18岁的瑞典公主克里斯蒂娜因为喜欢数学而爱上了52岁的笛卡尔。国王坚决反对他们交往,因此下令流放了笛卡尔。笛卡尔最后死在了狱中,死前最后写给公主的情书中出现了数学极坐标方程:r=a(1-sinθ)。聪明的公主解出了这个方程所代表的心形图案,也就是著名的“心形线”,知道笛卡尔一直深爱着自己。最后,公主一生未嫁。
所以正确的“心形线”不是在直角坐标系,而是在极坐标系下的喔,让我们一起感受一下这颗满满的爱心!
clc ;close alltheta=-pi:0.001:pi;r=10*(1-sin(theta));polar(theta,r,'r')

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图2


是不是觉得笛卡尔的心形线也不是特别逼真呢?下面提供几个更形象的心形线呢!

静态心形线:

ezplot('x^2+(y-(x^2)^(1/3))^2=9')

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图3

动态心形线:

clc;clear;a=20;x=-2:0.01:2;figure(1);set(gcf,'position',[0,0,800,600],'color','w');for i=1:200;    str_title = strcat('\color{red}a=',num2str(a));    y=abs(x).^(2/3)+(0.9*sqrt((3.3-x.^2))).*sin(a*pi*x);    a = i/10;    figure(i); set(gcf,'position',[0,0,800,600],'color','w');p1=plot(x,y,'r','LineWidth',3);hold on;title('\color{red}f(x)=x^2^/^3+e/3*(π-x^2)^1^/^2*sin(a*π*x)','fontsize',15);text(-0.2,2.3,str_title,'FontName','Times New Roman','FontSize',20);xlim([-2 2]);ylim([-1.5 2.5]);frame = getframe(gcf);    im=frame2im(frame);[I,map]=rgb2ind(im,256);if i==1    imwrite(I,map,'心.gif','gif','Loopcount',Inf,'DelayTime',0.05);    %imwrite函数将动图保存为GIFelse    imwrite(I,map,'心.gif','gif','WriteMode','append','DelayTime',0.05);endclose(figure(i));end

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图4

三维立体心形线:

clc close all[x,y,z]=meshgrid(linspace(-1.3,1.3)); val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9/80)*y.^2.*z.^3;isosurface(x,y,z,val,0)axis equal view(-10,24)colormap flag camlightlighting phong 

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图5

二维到三维,从 静止到动图,是不是越来越好看了呢,赶紧将代码复制到Matlab试试吧,调整一下参数,或许你可以得到更漂亮的爱心呦?
“心形线”的绘制纯属娱乐,玩转Matlab,它能做的 远远不止这些喔,有人说, 除了不会生孩子,其他都能完成

说正事,划重点!

作为科研狗,那该如何利用Matlab画出 高逼格图像呢?我和很多同学一样,曾经也觉得Matlab画的图像好丑,而且不清晰,还是因为对它的研究不透彻啦,下面来介绍代码完成和origin一样效果的绘图,这样在用Matlab计算完成后,不用再将数据导入origin画图,省去很多繁琐的工作啦!

以正余弦曲线为例:

%部分代码,详细代码关注公众号close all;clear;x=0:0.1:4*pi;y=sin(x);y1=cos(x-pi/6);plot(x,y,'bo-')%设置线型、标记符、颜色(b为蓝色,o为圆圈,-为实线),引号中三者不区分前后位置hold onplot(x,y1,'r*-')%设置线型、标记符、颜色(b为蓝色,*为星号,-为实线),引号中三者不区分前后位置

详细线型、标记符、颜色设置不用记忆,收藏好,直接查找下表就好啦!

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图6

其实在Matlab中,plot出来的图像,都可以美化的。 例如 坐标轴、横纵轴标签、标题(位置可调整)、图例、文本框、网格线 等等,这些code我都给大家写好啦,只需要关注公众号,回复“画图”,即可得到完整的code和学习教程啦,赶快保存,一起学习吧!用的时候调整相应的参数就可以啦!
axis on;  %设置坐标轴开启axis([0 4*pi -1 1]);%显示坐标轴范围,x轴为[0,4*pi],y轴为[-1,1]set(gca,'xtick',0:1:4*pi);%gca是当前坐标轴的句柄,xtick表示我要设置x轴刻度要显示的位置set(gca,'ytick',-1:0.2:1,'Fontname','Times New Roman');%xtick表示我要设置y轴刻度要显示的位置xlabel('\itx','FontSize',15,'Fontname','Times New Roman');%设置横轴标签、字号、字体ylabel('\ity','FontSize',15,'Fontname','Times New Roman');%设置纵轴标签、字号、字体I=legend('y=sin(x)','y=cos(x-\pi/6)','FontSize',12,'Location','Northeast')%设置图例,并设置字体、位置。适合一幅图内多条曲线I.FontName='Times New Roman';%此处可设置其他中文字体title('正余弦曲线','Fontname','宋体');%设置标题text(pi,sin(pi),'\leftarrowy=sin(x)','Fontname','Times New Roman','HorizontalAlignment','left')%设置要标注的数据点或者曲线text(9/5*pi,cos(9/5*pi-pi/6),'y=cos(x-\pi/6)\rightarrow','Fontname','Times New Roman','HorizontalAlignment','right')%设置要标注的数据点或者曲线grid on%添加网格线saveas(gcf,'正余弦曲线.svg')%保存绘制好的图像至当先文件夹,图片推荐svg矢量图格式,或者tiff无损压缩格式,保存更清晰喔
下面就得到啦完美的正余弦曲线呢!学会后,相信你可以画的更漂亮!
《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图7

友情提醒 图片推荐保存为svg矢量图格式,或者tiff无损压缩格式,这两种格式更清晰喔!
关注公众号,回复“ 画图”,即可得到画图完整的code和学习教程啦,赶快保存,一起学习吧!

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图8

《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图9

               公众号

                    小编微信
《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图10 《隐秘的角落》:张东升老师,你的“心形线”画错了喔!教你Matlab画出高逼格图像!的图11
                         B站
                      QQ群
(1条)
默认 最新
羅曼蒂克
评论 点赞 1
点赞 8 评论 1 收藏 3
关注