去评论
距米网-精简版

如何用MATLAB绘制想要的图片?

奇异果
2020/06/12 22:34:23
强大的图形功能是  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的绘图功能。尽管只涉及一个绘图功能,但本文已介绍了如何使用该功能(代码还写了一个注释),其他所有功能也相同。希望本文对您有所帮助。如果您想学习一些东西,可以在下面留言。只要我知道,我就会尽力回答。