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

Matlab画三维图_读书笔记图画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均为相同长度的向量cl

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
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均为相同长度的向量

clear
clc
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);

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

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

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画三维图_读书笔记图画

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)画一条直线

clear
clc
line([1,5,3],[4,5,6]);

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

例 画正五边形

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画三维图_读书笔记图画

例 画五角星

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画三维图_读书笔记图画

例 画正六边形和正八边形

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画三维图_读书笔记图画

例 画三维直线 XYZ均为向量

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画三维图_读书笔记图画

例 画三维直线 XYZ均为矩阵

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画三维图_读书笔记图画

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画三维图_读书笔记图画

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

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画三维图_读书笔记图画

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

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

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

clear  
clc  
[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
meshz(X,Y,Z) 

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

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

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画三维图_读书笔记图画

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

%参数方程的抛物面
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画三维图_读书笔记图画

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

%参数方程的锥面
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画三维图_读书笔记图画

surfl 在surf基础上,加入光照

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画三维图_读书笔记图画

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

%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画三维图_读书笔记图画

ezplot直接绘图

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

clear
clc
ezplot('x.*y + x.^2 - y.^2 - 1');

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

例 使用@指定坐标轴

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画三维图_读书笔记图画

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

clear
clc
ezplot3('cos(t)','t.*sin(t)','sqrt(t)')

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

ezcontour(FUN) 画等高线

clear
clc
ezcontour('x*exp(-x^2 - y^2)')

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

关注全栈程序员社区公众号