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 立体绘图相关推荐

  1. matlab设置xyz,matlab基本XYZ立体绘图命令

    基本XYZ立体绘图命令 在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧.本章将介绍MATLAB基本XYZ三度空间的各项绘图命令. mesh和 ...

  2. MATLAB 三维立体绘图

    % 三维立体绘图 t = 0:pi/50:10*pi plot3(sin(t),cos(t),t) xlabel('sin(t)') ylabel('cos(t)') zlabel('t') grid ...

  3. MATLAB 的绘图:二维和三维

    本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形. 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的.也就是 ...

  4. matlab平面绘图命令

    基本xy平面绘图命令 MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization).本节将介绍MATLAB基本xy平面及xyz空间的各项绘图 ...

  5. matlab 高级绘图函数

      matlab高层绘图函数即是指Matlab提供了一系列的绘图函数,这些绘图函数使得用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形.与高级绘图函数的相对的是,低级绘图函数,这 ...

  6. 《matlab科研绘图系列》之小提琴图绘制

    相信大家对小提琴图并不陌生,它是比箱形图更易于视觉直观解读的图形绘制方法.它使用数据的核密度估计值代替了箱形图,并可选择叠加数据点本身.小提琴图是箱形图的升级加强版,对数据分布有更丰富的理解,同时不必 ...

  7. MATLAB之绘图基础

    第7部分 MATLAB的绘图基础 1.二维图形绘制 (1)plot()函数 格式: plot(x)plot(x,y) 图形绘制函数plot(x)的格式说明 x内容 说明 实向量y 以y元素下标序号i为 ...

  8. MATLAB三维绘图(三)绘制等值线图

    MATLAB三维绘图(三)绘制等值线图 1.使用contour函数绘制等值图,示例: %% 显示不同颜色的梯度图 clear; clc; close all; x = -3.5:0.2:3.5; y ...

  9. MATLAB三维绘图(四)绘制特殊的三维图

    MATLAB三维绘图(四)绘制特殊的三维图 1.使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 ...

最新文章

  1. 获取服务器路径的方式 【记录】
  2. 英特尔用ViT做密集预测效果超越卷积,性能提高28%,mIoU直达SOTA|在线可玩
  3. C#反编译工具Reflector使用方法
  4. visio篇章--1
  5. 浅谈socket网络编程函数参数(一)
  6. go结构体初始化_golang中结构体的初始化方法
  7. Jsoup使用DOM方法来遍历一个文档
  8. 逆战网络连接断开连接服务器超时_物联网设备的网络连接---中篇
  9. 数据库的主键与外键的区别
  10. Linux 下Nginx+Tomcat 完美整合 nginx tomcat 整合方式
  11. 煤矿行业设备管理系统
  12. aix linux tcp连接数,修改windows、linux、aix等系统TCP/IP 参数
  13. 登录 Jed_SH ELK 默认端口
  14. 我给浏览器加了个语音搜索功能
  15. 域中文件服务器的设置权限,域中文件服务器共享权限设置.pdf
  16. java实现table斜线,诸位大神 ,怎样在table的 td中添加 一条斜线
  17. 远程服务器证书过期怎么解决,关于演示win7远程桌面证书过期的具体操作方式...
  18. 欧拉角中各种角度的名称
  19. ubuntu 18.04 IKFAST 运动学插件生成
  20. B类网络计算子网IP范围和掩码

热门文章

  1. word2010取消页眉中的横线
  2. lableme json转化为图片常用的脚本
  3. proxomx软件仓库无法使用解决
  4. 解决Deepin15.10安装后无WiFi和无线网卡驱动问题
  5. Python项目-Day26-数据加密-hash加盐加密-token-jwt
  6. Java期末实训作业日历软件设计
  7. Sql Server2008/2012/2014/2016中文版下载
  8. STM32SPI通信原理
  9. 新颖的自我介绍_精选简单新颖的自我介绍
  10. 过期域名查询php程序,一个域名查询的程序