MATLAB 立体绘图
MATLAB绘图基础
- 2 MATLAB的立体绘图
- 2.1 生成网格坐标矩阵的函数
- 2.2 画三维曲面的函数
- 2.3 三维旋转体的绘制
- 柱面图
- 球面图
- 2.4 三维图形的处理
- 视点处理
- 色彩处理
- 消隐处理
- 裁剪处理
- ❤隐函数作图
2 MATLAB的立体绘图
2.1 生成网格坐标矩阵的函数
[X,Y]=meshgrid(x,y) | 生成X-Y平面的网格坐标矩阵 |
---|---|
[X,Y,Z]=sphere(n) | 生成球面的三维坐标矩阵 |
[X,Y,Z]=cylinder(r,n) | 生成柱面的三维坐标矩阵 |
[X,Y]=meshgrid(x,y);Z=peaks(X,Y) | peaks多峰函数,生成多峰曲面的坐标矩阵 |
例子:
%例一
theta=0:pi/50:6*pi;
x=cos(theta); y=sin(theta); z=0:300;
plot3(x,y,z);
%例二
x=-3:0.1:3; y=-3:0.1:3;
[X,Y]=meshgrid(x,y); Z=X.^2+Y.^2;
surf(X,Y,Z);
2.2 画三维曲面的函数
plot3(X,Y,Z) | 三维曲面 |
---|---|
mesh(X,Y,Z) | 三维网格曲面 |
meshz(X,Y,Z) | 可将曲面加上围裙 |
meshc(X,Y,Z) | 同时画出网状图与等高线 |
surf(X,Y,Z) | 三维填充曲面(更精细) |
surfc(X,Y,Z) | 同时画出曲面图与等高线 |
bar3(A) | 三维柱状图 |
stem3(A) | 三维棒状图 |
pie3(A) | 三维饼状图 |
fill3(A) | 三维填充图 |
waterfall(X,Y,Z) | 三维瀑布图,可在x方向或y方向产生水流效果 |
contour3(X,Y,Z) | 三维等高线图 |
contour(X,Y,Z) | 画出曲面等高线在XY平面的投影 |
例子:
%mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。
%plot3可画出三度空间中的曲线。
t=linspace(0,20*pi, 501);
subplot(3,4,1),plot3(t.*sin(t), t.*cos(t), t);title('plot3');
%也可同时画出两条三度空间中的曲线
t=linspace(0, 10*pi, 501);
subplot(3,4,2),plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);title('plot3');
%mesh可画出立体网状图。
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的矩阵
subplot(3,4,3),mesh(xx, yy, zz);title('mesh'); %画出立体网状图
%peaks函数可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。
subplot(3,4,4),peaks;
%meshz可将曲面加上围裙。
[x,y,z]=peaks;
subplot(3,4,5),meshz(x,y,z);title('meshz');
axis([-inf inf -inf inf -inf inf]);
%meshc同时画出网状图与等高线。
[x,y,z]=peaks;
subplot(3,4,6),meshc(x,y,z);title('meshc');
axis([-inf inf -inf inf -inf inf]);
%surf画出立体曲面图
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的矩阵
subplot(3,4,7),surf(xx, yy, zz);title('surf'); %画出立体曲面图
%surfc同时画出曲面图与等高线。
[x,y,z]=peaks;
subplot(3,4,8),surfc(x,y,z);title('surfc');
axis([-inf inf -inf inf -inf inf]);
%waterfall可在x方向或y方向产生水流效果。
[x,y,z]=peaks;
subplot(3,4,9),waterfall(x,y,z);title('waterfall-x');
axis([-inf inf -inf inf -inf inf]);
%在y方向产生水流效果
[x,y,z]=peaks;
subplot(3,4,10),waterfall(x',y',z');title('waterfall-y');
axis([-inf inf -inf inf -inf inf]);
%contour3画出曲面在三度空间中的等高线。
subplot(3,4,11),contour3(peaks, 20);title('contour3');
axis([-inf inf -inf inf -inf inf]);
%contour画出曲面等高线在XY平面的投影。
subplot(3,4,12),contour(peaks, 20);title('contour');
2.3 三维旋转体的绘制
柱面图
由cylinder函数实现,调用格式为:
[x,y,z]=cylinder(R,n); %其中R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。
如:cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥,而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一个正弦圆柱面。
[X,Y,Z]=cylinder(R)或[X,Y,Z]=cylinder此形式为默认N=20且R=[1 1]
例子:
t=0:pi/20:2*pi;
[x,y,z]=cylinder(2+sin(t),30);
subplot(1,3,1);surf(x,y,z);
axis('equal');axis('square'); %控制坐标轴的大小相同
subplot(1,3,2);
x=0:pi/20:pi*3;
r=5+cos(x);
[a,b,c]=cylinder(r,30);
mesh(a,b,c);
axis('equal');axis('square');
subplot(1,3,3);
r=abs(exp(-0.25*t).*sin(t));
t=0:pi/12:3*pi;
r=abs(exp(-0.25*t).*sin(t));
[X,Y,Z]=cylinder(r,30);
mesh(X,Y,Z);
colormap([1 0 0]);
axis('equal');axis('square');
球面图
由sphere函数实现,调用格式为:
[X,Y,Z]=sphere(N); %此函数生成3个(N+1)*(N+1)的矩阵,利用函数surf(X,Y,Z) 可绘制出圆心位于原点、半径为1的单位球体。
n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。
[X,Y,Z]=sphere; %此形式使用了默认值N=20。
sphere(N); %只是绘制了球面图而不返回任何值。
例子:
subplot(1,2,1);
[x,y,z]=sphere;
surf(x,y,z);
axis('equal');axis('square'); %控制坐标轴的大小相同
subplot(1,2,2);
[a,b,c]=sphere(40);
t=abs(c);
surf(a,b,c,t);
axis('equal');axis('square');
colormap('hot');
2.4 三维图形的处理
视点处理
设置视点的函数view,调用格式为:
view(az,el); %其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。
例子:
subplot(2,2,1);mesh(peaks);view(-37.5,30);title('-37.5°,30°');
subplot(2,2,2);mesh(peaks);view(0,90);title('0°,90°');
subplot(2,2,3);mesh(peaks);view(90,0);title('90°,0°');
subplot(2,2,4);mesh(peaks);view(-7,-10);title('-7°,-10°');
色彩处理
内建矩阵
colormap hot
三维图形表面的着色
shading faceted; %将每个网格片用其高度对应的颜色进行着色,网格线是黑色
shading flat; %将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色
shading interp; %在网格片内采用颜色插值处理
消隐处理
例子:
z=peaks(50);
subplot(2,1,1);
mesh(z);title('消隐前的网图')
hidden off
subplot(2,1,2)
mesh(z);title('消隐后的网图')
hidden on
colormap([0 0 1]);
裁剪处理
将图形中需要裁剪部分对应的函数值设置成NaN,使函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
例子:
%削掉正弦波顶部或底部大于0.5的部分。
subplot(1,2,1);
x=0:pi/10:4*pi;
y=sin(x);
i=find(abs(y)>0.5);
x(i)=NaN;
plot(x,y);
axis([0 15 -0.4 0.4]);axis square
%绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。
subplot(1,2,2);
[x,y,z]=sphere(25);%生成外面的大球
z1=z;
z1(:,1:4)=NaN;%将大球裁去一部分
c1=ones(size(z1));
surf(3*x,3*y,3*z1,c1); %生成里面的小球
hold on
z2=z;
c2=2*ones(size(z2));
c2(:,1:4)=3*ones(size(c2(:,1:4)));
surf(1.5*x,1.5*y,1.5*z2,c2);
colormap([0 1 0;0.5 0 0;1 0 0]);
grid on;hold off;axis equal
❤隐函数作图
Matlab提供了ezplot函数绘制隐函数图形,用法如下:
①对于函数f=f(x),ezplot的调用格式为:
ezplot(f); %在默认区间(-2pi,2pi)绘制图形
ezplot(f,[a,b]); %在区间(a,b)绘制图形
②对于隐函数f=f(x,y),ezplot的调用格式为:
ezplot(f); %在默认区间(-2pi,2pi)绘制f(x,y)=0的图形
ezplot(f,[xmin,xmax,ymin,ymax]); %在区间[xmin,xmax,ymin,ymax]绘制图形
ezplot(f,[a,b]); %在区间(a,b)绘制图形
③对于参数方程x=x(t),y=y(t),ezplot函数的调用格式为:
ezplot(x,y); %在默认区间绘制x=x(t),y=y(t)图形
ezplot(x,y,[tmin,tmax]); %在区间(tmin,tmax)绘制x=x(t),y=y(t)图形
其他隐函数绘图还有ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc。
例子:
subplot(2,2,1);
ezplot('x^2+y^2-9');axis equal;
subplot(2,2,2);
ezplot('x^3+y^3-5*x*y+1/5')
subplot(2,2,3);
ezplot('cos(tan(pi*x))',[0,1]);
subplot(2,2,4);
ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]);
MATLAB 立体绘图相关推荐
- matlab设置xyz,matlab基本XYZ立体绘图命令
基本XYZ立体绘图命令 在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧.本章将介绍MATLAB基本XYZ三度空间的各项绘图命令. mesh和 ...
- MATLAB 三维立体绘图
% 三维立体绘图 t = 0:pi/50:10*pi plot3(sin(t),cos(t),t) xlabel('sin(t)') ylabel('cos(t)') zlabel('t') grid ...
- MATLAB 的绘图:二维和三维
本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形. 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的.也就是 ...
- matlab平面绘图命令
基本xy平面绘图命令 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATLAB基本xy平面及xyz空间的各项绘图 ...
- matlab 高级绘图函数
matlab高层绘图函数即是指Matlab提供了一系列的绘图函数,这些绘图函数使得用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形.与高级绘图函数的相对的是,低级绘图函数,这 ...
- 《matlab科研绘图系列》之小提琴图绘制
相信大家对小提琴图并不陌生,它是比箱形图更易于视觉直观解读的图形绘制方法.它使用数据的核密度估计值代替了箱形图,并可选择叠加数据点本身.小提琴图是箱形图的升级加强版,对数据分布有更丰富的理解,同时不必 ...
- MATLAB之绘图基础
第7部分 MATLAB的绘图基础 1.二维图形绘制 (1)plot()函数 格式: plot(x)plot(x,y) 图形绘制函数plot(x)的格式说明 x内容 说明 实向量y 以y元素下标序号i为 ...
- MATLAB三维绘图(三)绘制等值线图
MATLAB三维绘图(三)绘制等值线图 1.使用contour函数绘制等值图,示例: %% 显示不同颜色的梯度图 clear; clc; close all; x = -3.5:0.2:3.5; y ...
- MATLAB三维绘图(四)绘制特殊的三维图
MATLAB三维绘图(四)绘制特殊的三维图 1.使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 ...
最新文章
- 获取服务器路径的方式 【记录】
- 英特尔用ViT做密集预测效果超越卷积,性能提高28%,mIoU直达SOTA|在线可玩
- C#反编译工具Reflector使用方法
- visio篇章--1
- 浅谈socket网络编程函数参数(一)
- go结构体初始化_golang中结构体的初始化方法
- Jsoup使用DOM方法来遍历一个文档
- 逆战网络连接断开连接服务器超时_物联网设备的网络连接---中篇
- 数据库的主键与外键的区别
- Linux 下Nginx+Tomcat 完美整合 nginx tomcat 整合方式
- 煤矿行业设备管理系统
- aix linux tcp连接数,修改windows、linux、aix等系统TCP/IP 参数
- 登录 Jed_SH ELK 默认端口
- 我给浏览器加了个语音搜索功能
- 域中文件服务器的设置权限,域中文件服务器共享权限设置.pdf
- java实现table斜线,诸位大神 ,怎样在table的 td中添加 一条斜线
- 远程服务器证书过期怎么解决,关于演示win7远程桌面证书过期的具体操作方式...
- 欧拉角中各种角度的名称
- ubuntu 18.04 IKFAST 运动学插件生成
- B类网络计算子网IP范围和掩码