前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matlab画三维图_读书笔记图画

Matlab画三维图_读书笔记图画

作者头像
全栈程序员站长
发布2022-11-10 15:35:04
1K0
发布2022-11-10 15:35:04
举报
文章被收录于专栏:全栈程序员必看

plot3 基本的三维曲线图绘制 plot3(x,y,z),x,y,z均为相同长度的向量,会得到三个向量相同下标构成的的三维坐标(xi,yi,zi)(i=1~n)连的曲线

plot3(X,Y,Z),X,Y,Z均为相同大小的矩阵,均为m*n的矩阵时,plot3命令将绘得m条曲线,每条曲线均为X,Y,Z列向量为(x,y,z)坐标值的曲线

例 三维圆柱形螺旋线,x,y,z均为相同长度的向量

代码语言:javascript
复制
clear
clc
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 2条三维曲线,第一条是圆柱形螺旋线,第二条是圆锥形螺旋线,X,Y,Z均为501*2的向量

代码语言:javascript
复制
clear
clc
t = 0:pi/50:10*pi;
X=[cos(t);t.*cos(t)/50]'; %[cos(t);t.*cos(t)/50]矩阵为两行,取转置之后变为两列
Y=[sin(t);t.*sin(t)/50]';
Z=[t;t]';
plot3(X,Y,Z);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

line 绘制直线

line(X,Y) 如果X,Y均为n维向量,则会以X作为x轴坐标,Y轴作为y轴坐标,构成n个点,画出一条折线图(n-1条直线构成) line(X,Y) 如果X,Y均为相同大小的m*n矩阵,则会把X的第i列和Y的第i列看成X轴和Y轴,画出一条折线图,一共N条折线图 line(X,Y,Z) X,Y可以同时是n维向量,也可以同时是m*n矩阵,作用和二维的一样

例 从(1,4)到(5,5)画一条直线,然后从(5,5)到(3,6)画一条直线

代码语言:javascript
复制
clear
clc
line([1,5,3],[4,5,6]);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 画正五边形

代码语言:javascript
复制
clear
clc
X(1)=0;Y(1)=10;%定义初始坐标
edge=5; %定义边数
angle=2*pi/edge; %定义旋转角度
for i=1:edge
    X(i+1)=cos(angle)*X(i)-sin(angle)*Y(i);
    Y(i+1)=cos(angle)*Y(i)+sin(angle)*X(i);
end
line(X,Y);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 画五角星

代码语言:javascript
复制
clear
clc
X(1)=0;Y(1)=10;%定义初始坐标
edge=5; %定义边数
angle=4*pi/edge; %定义旋转角度
for i=1:edge
    X(i+1)=cos(angle)*X(i)-sin(angle)*Y(i);
    Y(i+1)=cos(angle)*Y(i)+sin(angle)*X(i);
end
line(X,Y);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 画正六边形和正八边形

代码语言:javascript
复制
clear
clc
%%计算正六边形坐标
X1(1)=0;Y1(1)=10;%定义初始坐标
edge=6; %定义边数
angle=2*pi/edge; %定义旋转角度
for i=1:edge+2 %为了保证维数相同多定义两个点
    X1(i+1)=cos(angle)*X1(i)-sin(angle)*Y1(i);
    Y1(i+1)=cos(angle)*Y1(i)+sin(angle)*X1(i);
end
%%计算正八边形坐标
X2(1)=0;Y2(1)=12;%定义初始坐标
edge=8; %定义边数
angle=2*pi/edge; %定义旋转角度
for i=1:edge
    X2(i+1)=cos(angle)*X2(i)-sin(angle)*Y2(i);
    Y2(i+1)=cos(angle)*Y2(i)+sin(angle)*X2(i);
end
line([X1;X2]',[Y1;Y2]');
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 画三维直线 XYZ均为向量

代码语言:javascript
复制
clear
clc
line([1,2],[4,5],[5,7]);
view(45,45); %由于line画出的图默认显示的是xoy面的投影,这里通过view进行三维选择(Rotate 3D)
hold on
line([1,2,3],[4,5,9],[5,7,7]);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 画三维直线 XYZ均为矩阵

代码语言:javascript
复制
clear
clc
line([8 0 7;10 8 8;7 9 7],[4 7 0;7 0 1;2 3 8],[14 1 15;6 9 6;19 8 4]);
view(45,45);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

view 控制视角

view(AZ,EL) AZ为视角点与原点连线投影到xoy面与y轴负向所称夹角,EL为视角点与原点连线与xoy面的投影所成夹角 view([X Y Z]) 设置坐标点XYZ为视角点 view(2) 使用默认的 2-D 视角, AZ = 0, EL = 90. view(3) 使用默认的 3-D 视角, AZ = -37.5, EL = 30.

Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

mesh 普通三维网格曲面,网格图,在行和列上绘制一系列曲线,构成网格 mesh*和surf*一般情况下需要配合meshgrid使用 例 使用普通三维网格曲面绘制抛物面

代码语言:javascript
复制
clear  
clc  
x=-10:0.1:10;  
y=-10:0.1:10;  
[X,Y]=meshgrid(x,y);  
Z=X.^2+Y.^2;    
mesh(X,Y,Z);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

meshc 带等高线的三维网格曲面,在mesh基础上,在底部绘制轮廓图 例 使用带等高线的三维网格曲面绘制锥面

Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

meshz 带底座的三维网格曲面,在mesh基础上,在网格四周绘制“帘子” 例 使用带底座的三维网格曲面绘制双峰函数

代码语言:javascript
复制
clear  
clc  
[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
meshz(X,Y,Z) 
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

waterfall 瀑布图,类似于meshz函数,但在矩阵的列之间不生成线 例 瀑布图

代码语言:javascript
复制
clear  
clc  
x=-10:0.5:10;  
y=-8:0.5:8;  
[X,Y]=meshgrid(x,y);  
Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2); 
waterfall(X,Y,Z);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

surf 曲面,和mesh的区别是,surf在小矩形上做颜色插值

代码语言:javascript
复制
%参数方程的抛物面
clear  
clc  
u=0:0.1:10;
t=0:pi/50:2*pi;
[U,T]=meshgrid(u,t);
X=U.*cos(T);
Y=U.*sin(T);
Z=U.*U;
surf(X,Y,Z);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

surfc在surf基础上,在底部绘制轮廓图 例

代码语言:javascript
复制
%参数方程的锥面
clear  
clc  
u=0:0.1:10;
t=0:pi/50:2*pi;
[U,T]=meshgrid(u,t);
X=U.*cos(T);
Y=U.*sin(T);
Z=U;
surfc(X,Y,Z);
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

surfl 在surf基础上,加入光照 例

代码语言:javascript
复制
clear  
clc  
[x,y] = meshgrid(-3:1/8:3);
z = peaks(x,y);
surfl(x,y,z);
shading interp %进行色彩的插值处理,使色彩平滑过渡
colormap(gray);  %将彩色图像映射为灰度图像
axis([-3,3,-3,3,-8,8]) %设置坐标范围
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

shading 是用来处理色彩效果的,分以下三种: no shading 一般的默认模式 即shading faceted shading flat 在faceted的基础上去掉图上的网格线 shading interp 在flat的基础上进行色彩的插值处理,使色彩平滑过渡 例

代码语言:javascript
复制
%shading
clear  
clc 
subplot(1,3,1)
sphere(16)
axis square
shading flat
title('Flat Shading')

subplot(1,3,2)
sphere(16)
axis square
shading faceted
title('Faceted Shading')

subplot(1,3,3)
sphere(16)
axis square
shading interp
title('Interpolated Shading')
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

ezplot直接绘图

ezplot(FUN) 直接使用函数表达式绘图,函数表达式也可以自定义的函数名

代码语言:javascript
复制
clear
clc
ezplot('x.*y + x.^2 - y.^2 - 1');
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

例 使用@指定坐标轴

代码语言:javascript
复制
clear
clc
subplot(1,2,1), ezplot('1./z - log(z) + log(-1+z) + t - 1')
%为了避免歧义,建议用下面的方式
subplot(1,2,2), ezplot(@(z,t)1./z - log(z) + log(-1+z) + t - 1)
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

ezplot3(FUNX,FUNY,FUNZ) 使用参数方程x=x(t),y=y(t),z=z(t)画三维图

代码语言:javascript
复制
clear
clc
ezplot3('cos(t)','t.*sin(t)','sqrt(t)')
Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

ezcontour(FUN) 画等高线

代码语言:javascript
复制
clear
clc
ezcontour('x*exp(-x^2 - y^2)')

Matlab画三维图_读书笔记图画
Matlab画三维图_读书笔记图画

此外,还有一系列ez*函数,如ezpolar, ezcontourf, ezsurf, ezmesh, ezsurfc, ezmeshc,有兴趣的自己查帮助文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183124.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档