强大的图形功能是 Matlab 的特点之一, Matlab 提供了一组绘图功能,我们可以在Matlab的右上角输入“ MATLAB Plots类型”的搜索界面,然后打开“ MATLAB Plots类型”文档,我们可以可以看到Matlab可以绘制各种图形,如下图所示。
Matlab不仅可以绘制二维图像,而且可以绘制三维图像,甚至动画,使您的学习,研究和工作中的绘图变得简单而美观。Matlab绘制了以下三种不同类型的图像。 在决定要绘制的图形时,最初不需要过多地考虑图像中的细节,只需选择我们需要的绘制功能即可。确定绘图功能后,我们可以通过提供或导入基本数据和参数来获得所需的图形。当然,Matlab可以直接在图形的每个元素上直接操作一系列对象,例如坐标轴,曲线(颜色,厚度),文本等。设置图像的显示模式(通过绘图功能)并不断调整图形中的各个元素后,您可以保存自己的绘图代码,并且可以在导入数据后一键绘制。所需的图像。在这里,我以三维曲面动画为例来说明如何在Matlab中进行绘制。 三维表面动画的分解似乎是从三维表面图的不断变化中获得的,然后我们必须首先制作一个单独的三维表面图。通过查看上述Matlab图形类型文档,我们可以在“ Surface and Mesh Plot”列中找到用于绘制3D曲面的Surf和Mesh函数。在这里我们选择要绘制的冲浪,那么如何使用冲浪功能?单击以打开冲浪文档,其中包含使用冲浪的详细说明。使用Matlab自己的说明,示例,或检查Internet上其他人使用的方法。我们可以从根本上阐明Z是在三维绘图中使用surf(Z)还是surf(X,Y,Z)最为关键。如果Z是m行×n列的矩阵,然后surf(Z)等效于将矩阵Z的每个元素投影到三维空间中以形成一个点。点的高度(z,也表示颜色)为:元素的特定值,x和y坐标对应于元素在矩阵中的索引位置。最后,用线连接相邻点以形成小的三维表面,最后绘制平滑的三维表面。 例如,我们要绘制一个f(x,y)= x ^ 2 + y ^ 2的三维图形,其中x和y的范围是-5到5。我们可以通过以下代码来实现:
x = -5:0.25:5;%设置x的值范围和精度 y = x; %y具有与x相同的范围和精度 [X,Y] = meshgrid(x,y);%返回与x和y相关的网格矩阵 Z = X. ^ 2 + Y. ^ 2;%生成区间内f(x,y)= x ^ 2 + y ^ 2的所有值 surf(X,Y,Z);%绘制3D表面图
终于我们得到了下图
因此,最后,让我们根据这张图片绘制三维曲面动画!动画效果是表面向下变平,继续向下弯曲到与向上弯曲相同的程度,然后返回到初始状态。这个过程的实际变化是高度,即Z值,然后我们依次取N个不同的Z值并绘制图片,然后将每个图像连接在一起。在Matlab中,可以通过生成gif格式的动画图片来实现上述功能。具体的代码和渲染如下:
x = -5:0.25:5;%设置x的值范围和精度 y = x; %y具有与x相同的范围和精度 [X,Y] = meshgrid(x,y);%返回与x和y相关的网格矩阵 Z = X. ^ 2 + Y. ^ 2;%生成区间内f(x,y)= x ^ 2 + y ^ 2的所有值 fact = 2 * sin(0:0.1 * pi:2 * pi);%设置Z的变化因子,此处使用周期函数sin,取整个周期的值 对于k = 1:length(事实) surf(X,Y,fact(k)* Z); 轴([-5 5 -5 5 -100 100])%设置坐标轴范围 caxis([-120 120])%设置坐标颜色范围 轴关闭%隐藏轴 title('3D animation');%设置图像名称 frame = getframe(gcf); %获取当前帧 im = frame2im(frame);%创建gif文件,该图像必须是索引索引图像 [I,map] = rgb2ind(im,256);%转换为gif图片,只能使用256种颜色 如果k == 1 %第一张照片直接保存到目录中 imwrite(I,map,strcat('C:\ toutiao \ 20180718 \','3D-Animation2','。gif'),'gif','Loopcount',inf,'DelayTime',0.1); else%剩余图片继续到上一张图片,每张图片间隔为0.1秒 imwrite(I,map,strcat('C:\ toutiao \ 20180718 \','3D-Animation2','。gif'),'gif','WriteMode','Append','DelayTime',0.1); 结束 结束
以上是今天介绍的Matlab的绘图功能。尽管只涉及一个绘图功能,但本文已介绍了如何使用该功能(代码还写了一个注释),其他所有功能也相同。希望本文对您有所帮助。如果您想学习一些东西,可以在下面留言。只要我知道,我就会尽力回答。
|