《MATLAB SYNTAX》第9章 三维图形可视化

peaks; %可以产生一个凹凸有致的曲面,包含三个局部极大值点和三个局部极小值点
peaks(n); %绘制三维曲面,三维曲面数据为n×n
z = peaks; %产生默认大小为49×49的矩阵,不绘制三维曲面
z = peaks(x,y); %计算输入参数为x和y的方程的值,不绘制三维曲面
[x,y,z] = peaks; %产生3个矩阵x、y和z,大小都为49×49,不绘制三维曲面
[x,y,z] = peaks(n); %产生3个矩阵x、y和z,大小都为n×n,不绘制三维曲面

在MATLAB中,采用函数mesh(网格图)和surf(曲面图)绘图时,要求数据是均匀分布的网格数据。
如果数据不是网格数据,可以采用函数meshgrid()创建插值的网格数据:

x = linspace(-2*pi,2*pi,100);
y = linspace(-2*pi,2*pi,100);
[X,Y] = meshgrid(x,y); %产生网格数据

如果已知的数据里有了X、Y、Z三个分量的数据,那么还可以用griddata()函数来生成插值网格数据:

ZI = griddata(X,Y,Z,XI,YI,'method'); %method可以取linear(默认线性插值)cubic(三次插值)nearest(临近点插值)

(9.1) plot3

clc;clear;
t = linspace(0,20*pi,500);
x = t.*sin(t);
y = t.*cos(t);
z = t;
plot3(x,y,z,'--b*');

在这里插入图片描述

(9.2) fplot3

fplot3(x_t,y_t,z_t,[tmin,tmax]); %绘制t在[tmin,tmax]上的三维曲线图
clc;clear;
x = @(t) sin(t);
y = @(t) cos(t);
z = @(t) t;
fplot3(x,y,z,[0,2*pi],'-r*');
hold on;
fplot3(@(t) sin(t),@(t) cos(t),@(t) t,[2*pi,4*pi],'-.gp');
fplot3(@(t) sin(t),@(t) cos(t),@(t) t,[4*pi,6*pi],'--bo');

在这里插入图片描述

(9.3) scatter3

clc;clear;
t = linspace(0,20*pi,500);
x = t.*sin(t);
y = t.*cos(t);
z = t;
scatter3(x,y,z,'p');

在这里插入图片描述

(9.4) pie3

例:将8.10中的例子画在三维图中。

clc;clear;
prices = [1.5 2.0 4.0 2.5];
explode = [1 0 1 0];
pie3(prices,explode);
legend('9Mn2V','9SiCr','Cr2','Cr12','Location','Best');

在这里插入图片描述

(9.5) bar3

例:用竖直条形图记录10个学生的语、数、外成绩。

clc;clear;
chinese = [80 85 84 90 86 91 95 76 82 94];
math = [96 97 94 85 89 93 100 99 87 82];
english = [95 96 85 87 83 94 92 82 96 76];
x = linspace(1,10,10);
y = [chinese;math;english]';
subplot(131);
bar3(x,y,'detached'); %默认
set(gca,'XTickLabel',{'语文成绩','数学成绩','英语成绩'});
set(gca,'YTickLabel',{'学生1','学生2','学生3','学生4','学生5','学生6','学生7','学生8','学生9','学生10'});
subplot(132);
bar3(x,y,'grouped');
set(gca,'XTickLabel',{'语文成绩','数学成绩','英语成绩'});
set(gca,'YTickLabel',{'学生1','学生2','学生3','学生4','学生5','学生6','学生7','学生8','学生9','学生10'});
subplot(133);
bar3(x,y,'stacked');
set(gca,'XTickLabel',{'语文成绩','数学成绩','英语成绩'});
set(gca,'YTickLabel',{'学生1','学生2','学生3','学生4','学生5','学生6','学生7','学生8','学生9','学生10'});

在这里插入图片描述

(9.6) bar3h

例:用水平条形图记录10个学生的语、数、外成绩。

clc;clear;
chinese = [80 85 84 90 86 91 95 76 82 94];
math = [96 97 94 85 89 93 100 99 87 82];
english = [95 96 85 87 83 94 92 82 96 76];
x = linspace(1,10,10);
y = [chinese;math;english]';
subplot(131);
bar3h(x,y,'detached'); %默认
set(gca,'XTickLabel',{'语文成绩','数学成绩','英语成绩'});
set(gca,'ZTickLabel',{'学生1','学生2','学生3','学生4','学生5','学生6','学生7','学生8','学生9','学生10'});
subplot(132);
bar3h(x,y,'grouped');
set(gca,'XTickLabel',{'语文成绩','数学成绩','英语成绩'});
set(gca,'ZTickLabel',{'学生1','学生2','学生3','学生4','学生5','学生6','学生7','学生8','学生9','学生10'});
subplot(133);
bar3h(x,y,'stacked');
set(gca,'XTickLabel',{'语文成绩','数学成绩','英语成绩'});
set(gca,'ZTickLabel',{'学生1','学生2','学生3','学生4','学生5','学生6','学生7','学生8','学生9','学生10'});

在这里插入图片描述

(9.7) stem3

clc;clear;
[X,Y] = peaks(20);
Z = peaks(X,Y);
stem3(X,Y,Z);

在这里插入图片描述

(9.8) quiver3

例:绘制 z = x e − x 2 − y 2 z=xe^{-x^2-y^2} z=xex2y2曲面的法向量图。

clc;clear;
[X,Y] = meshgrid(-2:0.25:2,-1:0.2:1);
Z = X.* exp(-X.^2 - Y.^2);
[U,V,W] = surfnorm(X,Y,Z); %求法向量
quiver3(X,Y,Z,U,V,W); %绘制法向量图
hold on;
surf(X,Y,Z);

在这里插入图片描述

(9.9) surf

clc;clear;
[X,Y] = meshgrid(-5:0.5:5);
Z = Y.*sin(X) - X.*cos(Y);
surf(X,Y,Z,'FaceAlpha',0.5,'EdgeColor','none'); %绘制曲面图

在这里插入图片描述

(9.10) surfc

clc;clear;
[X,Y,Z] = peaks;
surfc(X,Y,Z);

在这里插入图片描述

(9.11) surfl

clc;clear;
[X,Y,Z] = peaks;
surfl(X,Y,Z);
shading interp;

在这里插入图片描述

(9.12) fsurf

fsurf(f,[xmin,xmax,ymin,ymax]); %绘制z=f(x,y)的x在[xmin,xmax]、y在[ymin,ymax]上的曲面图
fsurf(x_uv,y_uv,z_uv,[umin,umax,vmin,vmax]); %绘制由x=funx(u,v)、y=funy(u,v)、z=funz(u,v)定义的曲面图
clc;clear;
r = @(u,v) 2 + sin(7.*u + 5.*v);
x_uv = @(u,v) r(u,v).*cos(u).*sin(v);
y_uv = @(u,v) r(u,v).*sin(u).*sin(v);
z_uv = @(u,v) r(u,v).*cos(v);
fsurf(x_uv,y_uv,z_uv,[0,2*pi,0,pi]);
camlight;

在这里插入图片描述

(9.13) ezsurfc

ezsurfc(f,[xmin,xmax,ymin,ymax]); %绘制z=f(x,y)的x在[xmin,xmax]、y在[ymin,ymax]上带等高线的曲面图
ezsurfc(x_uv,y_uv,z_uv,[umin,umax,vmin,vmax]); %绘制由x=funx(u,v)、y=funy(u,v)、z=funz(u,v)定义的带等高线的曲面图

(9.14) fimplicit3

fimplicit3(f,[xmin,xmax,ymin,ymax,zmin,zmax]); %绘制隐曲面f(x,y,z)=0

例:绘制隐曲面 x 2 + y 2 − z 2 = 0 x^2+y^2-z^2=0 x2+y2z2=0,通过将EdgeColor属性设置为’none’删除线条,通过将FaceAlpha属性设置为0到1之间的值改变透明度。

clc;clear;
f = @(x,y,z) x.^2 + y.^2 - z.^2;
fimplicit3(f,[-5,5,-5,5,-5,5],'EdgeColor','none','FaceAlpha',0.5);

在这里插入图片描述

(9.15) mesh

clc;clear;
[X,Y,Z] = peaks;
mesh(X,Y,Z);

在这里插入图片描述

(9.16) meshc

clc;clear;
[X,Y,Z] = peaks;
meshc(X,Y,Z);

在这里插入图片描述

(9.17) meshz

clc;clear;
[X,Y,Z] = peaks;
meshz(X,Y,Z);

在这里插入图片描述

(9.18) fmesh

fmesh(f,[xmin,xmax,ymin,ymax]); %绘制z=f(x,y)的x在[xmin,xmax]、y在[ymin,ymax]上的网格图
fmesh(x_uv,y_uv,z_uv,[umin,umax,vmin,vmax]); %绘制由x=funx(u,v)、y=funy(u,v)、z=funz(u,v)定义的网格图
clc;clear;
r = @(u,v) 2 + sin(7.*u + 5.*v);
x_uv = @(u,v) r(u,v).*cos(u).*sin(v);
y_uv = @(u,v) r(u,v).*sin(u).*sin(v);
z_uv = @(u,v) r(u,v).*cos(v);
fmesh(x_uv,y_uv,z_uv,[0,2*pi,0,pi]);
camlight;

在这里插入图片描述

(9.19) ezmeshc

ezmeshc(f,[xmin,xmax,ymin,ymax]); %绘制z=f(x,y)的x在[xmin,xmax]、y在[ymin,ymax]上带等高线的网格图
ezmeshc(x_uv,y_uv,z_uv,[umin,umax,vmin,vmax]); %绘制由x=funx(u,v)、y=funy(u,v)、z=funz(u,v)定义的带等高线的网格图

《 M A T L A B   S Y N T A X 》 系 列 博 客 创 作 参 考 资 料 来 源 《MATLAB\ SYNTAX》系列博客创作参考资料来源 MATLAB SYNTAX

  1. 《自动控制原理实验教程》.巨林仓.西安交通大学出版社.
  2. 《MATLAB工程与科学绘图》.周博.薛世峰.清华大学出版社.
  3. 《MATLAB R2018a完全自学一本通》.刘浩.韩晶.电子工业出版社.
  4. 《科学计算与MATLAB语言》.刘卫国.蔡旭晖.吕格莉.何小贤.中国大学MOOC.
  5. 《MATLAB软件与基础数学实验》.李换琴.朱旭.王勇茂.籍万新.西安交通大学出版社.
  6. 《Matlab教程 - 图像处理》@正月点灯笼.https://www.bilibili.com.
  7. 《MATLAB从入门到秃头》@古德谓尔.https://www.bilibili.com.

博 客 创 作 : A i d e n   L e e 博客创作:Aiden\ Lee Aiden Lee
特别声明:文章仅供学习参考,转载请注明出处,严禁盗用!

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装第三方包时出现"SyntaxError: invalid syntax"错误通常是由于使用了错误的语法或语法错误导致的。可能的原因有以下几点: 1. 版本不匹配:请确保你使用的库与你的Python版本兼容。某些库可能只适用于特定的Python版本。 2. 安装方式不正确:确保你使用正确的命令来安装第三方库。通常使用pip来安装库,示例命令为"pip install packagename"。 3. 环境配置问题:有时候,需要先在系统或虚拟环境中正确配置Python环境。请检查你的环境配置是否正确。 4. 编码问题:请确保你的代码文件的编码格式与Python解释器一致。常见的编码格式是UTF-8。 如果你遇到"SyntaxError: invalid syntax"错误,请按照以下步骤进行排查和解决: 1. 检查你的代码:仔细检查你的代码,看是否存在语法错误、拼写错误或其他错误。确保你的代码符合Python语法规范。 2. 检查Python版本:确认你使用的Python版本与第三方库要求的版本匹配。可以使用命令"python --version"来检查你的Python版本。 3. 检查安装方式:确认你使用了正确的命令来安装第三方库。如果是使用pip来安装,请确保pip已经正确安装,并且你正在使用正确的pip命令。 4. 检查环境配置:检查你的Python环境配置是否正确。你可能需要设置正确的Python路径或者创建一个虚拟环境来安装第三方库。 5. 检查编码格式:确保你的代码文件的编码格式与Python解释器一致。可以在代码文件的开头添加一行注释来指定编码格式,例如"#!/usr/bin/env python # -*- coding: utf-8 -*-"。 如果以上方法都没有解决问题,你可以参考引用、和中提供的链接,其中包含了更多关于"SyntaxError: invalid syntax"错误的解决方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [关于“pip install ##”报错“SyntaxError: invalid syntax”等问题及解决方案](https://blog.csdn.net/qq_43210428/article/details/114667452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [pip安装python工具包,出现SyntaxError: invalid syntax或者NameError: name ‘pip‘ is not defined错误](https://blog.csdn.net/qq_45064049/article/details/119649142)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python27_ezsetup_pip.zip](https://download.csdn.net/download/qq_37970770/12719657)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值