MATLAB中的三维图形绘制与动画制作技巧
实验Matlab三维作图地绘制

实验9 三维绘图一、实验目的学会MATLAB软件中三维绘图的方法。
二、实验内容与要求1.三维曲线图格式一:plot3(X,Y,Z,S).说明:当X,Y,Z均为同维向量时,则plot3描出点X(i),Y(i),Z(i)依次相连的空间曲线.若X,Y均为同维矩阵,X,Y,Z每一组相应列向量为坐标画出一条曲线,S为‘color﹣linestyle﹣marker’控制字符表1.6~表1.10.【例1.79】绘制螺旋线.>>t=0:pi/60:10*pi;>>x=sin(t);>>y=cos(t);>>plot3(x,y,t,’*-b’)>>grid on图形的结果如图1.16所示.格式二:comet3(x,y,z).说明:显示一个彗星通过数据x,y,z确定的三维曲线.【例1.80】>>t=-20*pi:pi/50:20*pi;>>comet3(sin(t),cos(t),t)可见到彗星头(一个小圆圈)沿着数据指定的轨道前进的动画图象,彗星轨道为整个函数所画的螺旋线.格式三:fill3(X,Y,Z,C) ℅填充由参数X,Y,Z确定的多边形,参数C指定颜色.图1.16 例1.79图形结果图1.17 例1.81图形结果【例1.81】>>X=[2,1,2;9,7,1;6,7,0];>>Y=[1,7,0;4,7,9;0,4,3];>>Z=[1,8,6;7,9,6;1,6,1];>>C=[1,0,0;0,1,0;0,0,1]>>fill3(X,Y,Z,C)>>grid on图形的结果如图1.17所示.问题 1.30:图 1.17中每个三角形按什么规律画出的?(用X,Y,Z的对应列元素值为坐标画三角形)每个三角形内填充的颜色又有何规律?(用C 第i列元素值对应的颜色,从第i个三角形对应顶点向中心过渡)若C=[1,5,10;1,5,10;1,5,10],结果如何?2.三维网格图格式:mesh(X,Y,Z,C) ℅画出颜色由C指定的三维网格图.meshc(X,Y,Z,C) ℅画出带有等高线的三维网格图.meshz(X,Y,Z,C) ℅画出带有底座的三维网格图.说明:若X与Y均为向量,n=length(X),m=length(Y), Z必须满足[m,n]=size(Z),则空间中的点(X(j),Y(i),Z(i,j))为所画曲面网线的交点,X 对应于Z的列,Y对应于Z的行;若X,Y,Z均为同维矩阵,则空间中的点(X(i,j),Y(i,j),Z(i,j))为所画曲面的网线的交点;矩阵C指定网线的颜色,MATLAB对矩阵C中的数据进行线性处理,以便从当前色图中获得有用的颜色,若C缺省,网线颜色和曲面的高度Z相匹配.在三维作图常用到命令meshgrid,其功能是生成二元函数z=f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y.格式:[X,Y]= meshgrid(x,y).说明:输入向量x为x-y平面上x轴的值,向量y为x-y平面上y轴的值.输出矩阵X为x-y平面上数据点的横坐标值,输出矩阵Y为x-y平面上数据点的纵坐标值.【例1.82】>> x=1:4;>> y=1:5;>> [x,y]=meshgrid(x,y)x =1 2 3 41 2 3 41 2 3 41 2 3 41 2 3 4y =1 1 1 12 2 2 23 3 3 34 4 4 45 5 5 5图1.18所示x-y 平面上的矩形定义域中20个数据点(星号点)的坐标就是有X ,Y 决定的。
数学建模 第二篇1 MATLAB作图讲解

MATLAB作图
(2) mesh(x,y,z) 画网格曲面
数据矩阵。分别表示数据点 的横坐标、纵坐标、函数值
例 画出曲面Z=(X+Y).^2在不同视角的网格图. 解 x=-3:0.1:3;y=1:0.1:5; [X,Y]=meshgrid(x,y); Z=(X+Y).^2; mesh(X,Y,Z)
MATLAB作图
(2) figure(h) 新建h窗口,激活图形使其可见,并置于其它图形之上
例
解
区间[0,2*pi]新建两个窗口分别画出 y=sin(x);z=cos(x)。
x=linspace(0,2*pi,100); y=sin(x);z=cos(x); plot(x,y); title('sin(x)'); pause figure(2); plot(x,z); title('cos(x)'); 返回
hh = zlabel(string) hh = title(string)
MATLAB作图
例 在区间[0,2*pi]画sin(x)的图形,并加注图例 “自变量X”、“函数Y”、“示意图”, 并加格栅.
解 x=linspace(0,2*pi,30); y=sin(x); plot(x,y) xlabel('自变量X') ylabel('函数Y') title('示意图') grid on
3.图形保持 hold off 释放当前图形窗口
MATLAB作图
(1) hold on 保持当前图形, 以便继续画图 例 将y=sin(x),y=cos(x)分别用点和线画在一图上
解 x=linspace(0,2*pi,30); y=sin(x); z=cos(x) plot(x,z,:) hold on Plot(x,y) Matlab liti 5
matlab三维图形绘制和动画制作实验报告

MATLAB 及仿真技术实验报告
四、实验内容和步骤
1、实验内容
(1)在02πt ≤≤区间内,有3sin x t =,5cos y t =,3z txy =,要求:
① 以子图形式绘出t 与x ,t 与y , t 与z 以及同一标度同一幅图中的三个函数图; ② 绘出三维曲线。
02468-4
-202402468
-505
2
4
6
8
-150
-100-500501000
2
4
6
8
-150
-100-50050100
信息工程学院
3 -2
2
(2)已知
2
)
cos
cos(x
y
x
z+
+
=
绘制三维曲面图,并进行插值着色处理。
510
5
10
(3)用stem绘制离散图象:加网格线
4sin(3π/6)
x n
=+
信息工程学院
5
50
100
150
200
0.5
1
1.5
(4)播放一个直径不断变化的球体。
-1
1
-1
1
2、实验步骤
(1)分析实验内容,写出程序大致框架或完整的程序代码。
(2)进入MATLAB7.0集成环境。
(3)编辑程序并进行保存。
(4)运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。
Matlab-制作动画

保存动画的示例1
• 三维动画
[x,y,z]=peaks(30); %peaks产生一个凹凸有致的曲面 surf(x,y,z) %用X和Y定义x-y坐标网格,Z定义网格上每一点的高度,来生成三维曲面 axis([-3 3 -3 3 -10 10]) m=moviein(15); for i=1:15 view(-37.5+24*(i-1),30) m(:,i)=getframe; end movie(m)
surf(sin(2*pi*j/20)*Z,Z) F(j) = getframe; end movie(F,20)
15
其它动画示例程序
clear;clc; [x,y]=meshgrid(-8:.1:8); for j=1:20 f=@(x,y)(sin(sqrt((11-j)*(x.^2+y.^2)))./sqrt((11-j)*(x.^2+y.^2)+eps)); z=f(x,y); surf(x,y,z);shading interp; M(j) = getframe; if j==1 [I,map]=rgb2ind(M(j).cdata,256); imwrite(I,map,'out.gif','DelayTime',.1) else imwrite(rgb2ind(M(j).cdata,map),map,'out.gif','WriteMode','append','DelayTime',.1) end end movie2avi(M,'out.avi')
• 一般格式:
for i=1:n figure(i) F(i)=getframe; end; movie2avi(F,'...filename.avi')
第5章matlab绘制二维图形及三维图形的方法

实验四
专业:电子信息工程2班姓名:李书杰学号:3121003210
一、实验目的
1.掌握绘制二维图形及三维图形的方法。
2.掌握图形控制与修饰处理的方法。
3.了解图像处理及动画制作的基本方法。
二、实验内容
1.绘制下列图形曲线。
(1)y=x-x^3/3! (2)x^2+2Y^2=64
解:程序如下
2.设y=1/(1+e^-t),-pi<=t<=pi,在同一个图形窗口中采用子图的形式绘制条形图、阶梯图、杆图和对数坐标等不同图形,并对不同图形加标注说明。
解:程序如下
3.绘制下列极坐标图。
(1)ρ=5cosθ+4 (2)γ=5sin^2φ/cosφ,-π/3<φ<π/3 解:程序如下
思考练习:
2.绘制下列曲线
(1)y=1/2πe^(-x^2/2) (2)x=tsint y=tcost
解:程序如下
(1)
结果如下:
(2)
结果如下:
3.在同一坐标中绘制下列两条曲线并标注两曲线交叉点。
(1)y=2x-0.5
(2)x=sin(3t)cost
Y=sin(3t)sint
解:程序如下
4.分别用plot和fplot函数绘制y=sin(1/x)的曲线,分析两曲线的差别。
解:程序如下
结果如下:
5.绘制下列极坐标图:
(1)p=12/sqrt(θ) (2)γ=3asinφcosφ/(sin^3φ+cos^3φ)解:程序如下
结果如下:。
MATLAB图形及三维动画仿真设计

[X,Y]=meshgrid(x,y);
p=sqrt(4-X.^2/9-Y.^2/4);
subplot(3,2,1);mesh(p); %有网格 格子图,色调方向:有上
subplot(3,2,2);surf(p); %默认的方向:色调方向:有上到
subplot(3,2,3);surfc(p); %带等高线;色调方向:有上到下
axis([0 6 8 18])
z=f(x,y) — 根据x,y坐标找出z的高度 例:绘制z=x2+y2的三维网线图形
>>x=-5:5; y=x; >>[X,Y]=meshgrid(x,y); >>Z=X.^2+Y.^2 ; >>mesh(X,Y,Z)
(五)三维曲面图
■ surf —— 三维曲面绘图函数,与网格图看起来一样 与三维网线图的区别: 网线图:线条有颜色,内部是黑色的(无颜色) 曲面图:线条是黑色的,内部有颜色(把线条之间的空
■
■
■ fill3(x,y,z,"w"); ■ hold on; ■ plot3(x,y,z,"ro") ■ grid on ■ xlabel("x轴"),ylabel("y轴"),zlabel("z轴") ■ axis([0 10 0 10 0 10])
(四)三维网格图
所谓网格图,是指把相邻的数据点连接起来形成的网状曲 面。利用在X-Y平面的矩形网格点上的Z轴坐标值,Matlab 定义了一个网格曲面。三维网格图的形成原理为:在X-Y平 面上指定一个长方形区域,采用与坐标轴平行的直线将其分 格;计算矩形网格点上的函数值,即Z轴的值,得到三维空 间的数据点;将这些数据点分别用处于X-Z或者平行面内的 曲线和处于Y-Z或者平行面的曲面连接起来,即形成网格图。 网格图对于显示大型的数值矩阵很有用处。
MATLAB应用第五章-MATLAB图形和3D可视化
th=[0:pi/50:3*pi]'; a=[0.5:0.5:5.5] Y=cos(th)*a; X=sin(th)*sqrt(25-a.^2); plot(X,Y) axis('equal') xlabel('X') ylabel('Y') title('a group of Ellipse lines')
F5运行结果如图 Eg 5-5
若没有axis(‘equal’)则显示如下: equal 将x和y轴的坐标进行比例协调,使其显 示相等。
5.2.2 线型、顶点标记和颜色
色彩(c) 说明 数据点(m) r g b c m y k w 红色 绿色 蓝色 青色 洋红 黄色 黑色 白色 + O * . x s d ^ v > < p h 说明 加号 圆圈 星号 点 十字 矩形 菱形 上三角 下三角 右三角 左三角 五边形 六边形 Eg 5-6 线型( ) 线型(l) -: -. 说明 实线 虚线 点线 点划 线
Eg 5-11 pie(x):对所有向量x中的元素进行总计,显示每一部 分所占比例 pie(x,explode):定义一个与x同长度向量explode,对 应于非零元素的x值被抽出显示 pie(…,labels):标注扇形图,labels必须与前面向量具 有相同长度
Eg 5-12
在命令窗口输入下列命令” 在命令窗口输入下列命令” >> x=1:12; >> y=[-12 -6 4 11 23 26 36 30 21 17 10 3]; >> bar(x,y) >> xlabel('month'),ylabel('tempereature'); >> title('relationship')
matlab动画制作例子
matlab动画制作例子
在MATLAB中,你可以使用`pause`和`drawnow`命令来制作动画。
以下是一个简单的例子,它展示了如何创建一个动画,该动画显示一个点在二维平面上沿一圆形路径移动。
```matlab
% 初始化参数
t = 0::2pi; % 时间向量
x = sin(t); % x坐标
y = cos(t); % y坐标
% 创建图形窗口
figure;
% 循环动画
for k = 1:length(t)
% 绘制当前点的位置
plot(x(k), y(k), 'ro');
% 添加标题和标签
title('点在圆上的移动');
xlabel('x');
ylabel('y');
% 暂停并更新图形,以便可以看到动画效果
pause();
drawnow;
end
```
这个脚本将会创建一个动画,显示一个点在二维平面上沿着一个圆形路径移动。
这个动画是通过在一个循环中绘制每个点的位置并暂停一段时间来创建的。
`drawnow`命令将立即更新图形窗口,使得你可以看到动画效果。
注意:MATLAB的版本和环境可能会影响动画的表现。
在一些环境中,可能需要使用不同的命令或参数才能获得最佳的动画效果。
matlab三维绘图ppt课件
title('交线')
13
xx
马鞍面、平面及交线
14
xx
三维图形的控制命令
视角控制命令view
view(az,el)
设置查看三维图的 视点。az为水平方 位角,从y轴负方向 开始,逆时针旋转 为正;el为垂直方 位角,以向z轴方向 旋转为正。三维默 认视角为az=-37.5, el=30
与三维网格图的区别: 网格图:线条有颜色,空挡没有颜色 曲面图:线条是黑色,空挡有颜色(把线条之间的
空挡填充颜色,沿z轴按每一网格变化)
10
xx
例:绘制函数 z xe(x2y2 ) , 2 x, y 2
,比较指令mesh和surf。
的图像
解:matlab命令为:
t=-2:0.1:2; [x,y]=meshgrid(t); z=x.*exp(-x.^2-y.^2); subplot(1,2,1),mesh(x,y,z),title('网格图') subplot(1,2,2),surf(x,y,z),title('曲面图')
的背景设置为color_option指定的颜色
见P70 例4-36
20
图形颜色控制命令colormap
colormap([R,G,B]) 用单色绘图, [R,G,B]代表一 个配色方案,取值在[0,1]之间。通过对R、G、B大 小的设置,可以调制出不同的颜色。p71表4-5
colormap(CM) CM为色图矩阵。色图为m*3的 矩阵。Matlab预定义了一些色图矩阵的值,表4-6 为常用的色图矩阵。
MATLAB 绘图
xx
1
三维曲线绘图 三维曲面绘图
Matlab——图形绘制——三维立体图形剔透玲珑球动态图——彗星状轨迹图
Matlab——图形绘制——三维⽴体图形剔透玲珑球动态图——彗星状轨迹图三维绘图函数三维绘制⼯具函数view实例:三维螺旋线>> t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)grid %添加⽹格plot3可以画出空间中的曲线>> t=linspace(0,20*pi, 501);plot3(t.*sin(t), t.*cos(t), t); %注意⽤点乘 .*也可以同时画出两条空间中的曲线>> t=linspace(0,10*pi,501);>> plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);正弦曲线图x=linspace(0,3*pi); % 0到 3pi 间100 个数据点z1=sin(x);z2=sin(2*x);z3=sin(3*x);y1=zeros(100); % 含有100 个数据的0数组y3=zeros(100);y2=y3/2;plot3(x,y1,z1,x,y2,z2,x,y3,z3);⽴体⽹状图实例:>> x=linspace(-2, 2, 25); %在x轴上取25点y=linspace(-2, 2, 25); %在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); %计算函数值,zz也是21x21的矩阵mesh(xx, yy, zz); %画出⽴体⽹状图曲⾯图>> x=linspace(-2, 2, 25); %在x轴上取25点y=linspace(-2, 2, 25); %在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); %计算函数值,zz也是21x21的矩阵surf(xx, yy, zz);%画出⽴体曲⾯图peaks函数>> z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...- 1/3*exp(-(x+1).^2 - y.^2);>> peaks z也可以对peaks函数取点,再以各种不同的⽅法进⾏绘图meshz 可将曲⾯加上围裙[x,y,z]=peaks;meshz(x,y,z);waterfall 可在x ⽅向或y ⽅向产⽣⽔流效果:[x,y,z]=peaks;waterfall(x,y,z);产⽣在y⽅向的⽔流效果:[x,y,z]=peaks;waterfall(x',y',z');meshc 同时画出⽹状图与等⾼线:[x,y,z]=peaks;meshc(x,y,z);surfc 同时画出曲⾯图与等⾼线:[x,y,z]=peaks;surfc(x,y,z);contour3 画出曲⾯在三度空间中的等⾼线contour3(peaks, 20);contour 画出曲⾯等⾼线在XY 平⾯的投影contour(peaks, 20);剔透玲珑球[X0,Y0,Z0]=sphere(30); %产⽣单位球⾯的三维坐标X=2*X0;Y=2*Y0;Z=2*Z0; %产⽣半径为2 的球⾯的三维坐标surf(X0,Y0,Z0); %画单位球⾯shading interp %采⽤插补明暗处理hold on; mesh(X,Y,Z);hold off %画外球⾯hidden off %产⽣透视效果axis off %不显⽰坐标轴动态图形动画效果——彗星状轨迹图R0=1; %以地球半径为⼀个单位a=12*R0;b=9*R0;T0=2*pi; %T0是轨道周期T=5*T0;dt=pi/100;t=[0:dt:T]';f=sqrt(a^2-b^2); %地球与另⼀焦点的距离th=12.5*pi/180; %卫星轨道与x-y平⾯的倾⾓E=exp(-t/20); %轨道收缩率x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t)); plot3(x,y,z,'g') %画全程轨线[X,Y,Z]=sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z; %获得单位球坐标grid on,hold on,surf(X,Y,Z),shading interp %画地球x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0; axis([x1 x2 y1 y2 z1 z2]) %确定坐标范围view([11737]),comet3(x,y,z,0.02),hold off %设视⾓、画运动轨线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB中的三维图形绘制与动画制作技巧
引言
MATLAB是一种强大的科学计算软件,广泛应用于工程、物理、数学等各个
领域。
其中,三维图形绘制和动画制作是其功能的重要一部分。
本文将深入探讨MATLAB中三维图形绘制与动画制作的技巧,并给出一些实用的示例。
一、三维图形绘制
1. 坐标系的设定
在绘制三维图形之前,我们需要设定坐标系。
通过使用MATLAB的figure函
数和axes函数,我们可以创建一个三维坐标系,并设置其属性,如坐标轴的范围、标签等。
2. 点的绘制
在三维图形中,最基本的图元是点。
通过scatter3函数,我们可以绘制出一系
列点的三维分布情况。
可以通过设置点的大小、颜色、透明度等属性,增加图像的美观性。
3. 曲线的绘制
MATLAB提供了多种绘制曲线的函数,如plot3、line、quiver等。
通过这些函数,我们可以绘制各种样式的曲线,例如直线、曲线、矢量、流线等。
我们可以根据需要设置线条的样式、颜色、宽度等属性。
4. 曲面的绘制
除了曲线,我们还可以绘制三维曲面。
通过函数mesh、surf和contour,我们
可以绘制出具有平滑外形的曲面。
可以通过设置颜色映射和透明度等属性,使得曲面具有更加细腻的外观。
二、动画制作
1. 创建动画对象
要制作动画,我们需要先创建一个动画对象。
通过使用MATLAB的videoWriter函数,我们可以创建一个视频文件,并设置其参数,如帧率、分辨率等。
2. 绘制关键帧
动画的核心是绘制一系列关键帧,并在每一帧之间进行插值。
通过在每一帧中修改图形对象的属性,我们可以实现对象的平移、旋转和缩放等变换。
通过MATLAB提供的getframe函数,我们可以将当前图像存储为一个帧对象。
3. 帧之间的插值
在关键帧之间,我们需要进行插值,以平滑动画的过渡。
通过使用MATLAB 的linspace函数,我们可以生成两个关键帧之间的若干插值。
然后,我们可以在每个插值处更新图形对象的属性,从而实现动画效果。
4. 导出动画
完成动画的制作后,我们可以使用MATLAB的writeVideo函数,将所有帧对象写入视频文件中。
最后,使用close函数关闭视频文件。
结论
MATLAB提供了丰富的工具和函数,使得三维图形绘制和动画制作变得简单而有趣。
通过灵活运用这些技巧,我们可以创建出各种形式的三维图形和动画。
同时,这些技巧也为我们在科学计算、数据可视化等方面提供了强大的支持。
虽然本文只是对MATLAB中三维图形绘制和动画制作技巧的简单介绍,但希望读者们能够在这个基础上进一步探索,发现更多有趣的应用和创意。
让我们一起享受MATLAB带来的无限可能吧!。