MATLAB——三维图像

article/2025/9/18 10:57:58

1.绘制三位曲线

(1)plot3函数
1.基本用法:plot3(x,y,z);其中,参数x、y、z组成一组曲线的坐标。

例1 绘制一条空间曲线

x=[0.2,1.8,2.5];
y=[1.3,2.8,1.1];
z=[0.4,1.2,1.6];
plot3(x,y,z)
grid on
axis([0,3,1,3,0,2]);

例2 绘制螺旋线

t=linspace(0, 10*pi, 200);
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;
subplot(1, 2, 1)
plot3(x, y, z)
grid on
subplot(1, 2, 2)
plot3(x(1:4:200), y(1:4:200), z(1:4:200))
grid on

2.plot3(x,y,z)函数参数变化形式
plot3(X,Y,Z);

  • 当三个参数是同型矩阵时,以X,Y,Z对应列元素绘制曲线,曲线条数等于矩阵列数。
  • 参数X、Y、Z中有向量,也有矩阵时,向量的长度与矩阵相符。
    例3 在空间不同位置绘制5条正弦曲线。
    t=0:0.01:2*pi;t=t';x=[t, t, t, t, t];y=[sin(t), sin(t)+1, sin(t)+2, sin(t)+3, sin(t)+4];z=x;plot3(x,y,z)

这个例子也可以采用以下代码实现。

t=0:0.01:2*pi;
x=t;
y=[sin(t); sin(t)+1; sin(t)+2; sin(t)+3; sin(t)+4];
z=x;
plot3(x,y,z)

3.含多组输入参数的plot3函数

plot3(x1,y1,z1,x2,y2,z2,...,xn,yn,zn)

每一组x、y、z向量构成一组数据点的坐标,绘制一条空间曲线。

例4 绘制三条不同长度的正弦曲线。

t1=0:0.01:1.5*pi;
t2=0:0.01:2*pi;
t3=0:0.01:3*pi;
plot3(t1,sin(t1),t1, t2,sin(t2)+1,t2, …t3,sin(t3)+2,t3)

4.含选项的plot3函数

plot3(x,y,z,选项)

例5 绘制空间曲线

t=0:pi/50:6*pi;
x=cos(t);
y=sin(t);
z=2*t;
plot3(x,y,z,'p')
xlabel('X'),ylabel('Y'),zlabel('Z');
grid on

(2)fplot3函数

fplot3(funx,funy,funz,tlims)

其中,funx,funy,funz,tlims代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。tlims表示参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认值为[-5,5]。
例6 绘制墨西哥帽顶曲线

xt = @(t) exp(-t/10).*sin(5*t);
yt = @(t) exp(-t/10).*cos(5*t);
zt = @(t) t;
fplot3(xt, yt, zt, [-12, 12])

用红色点划线绘制墨西哥帽顶曲线。

xt = @(t) exp(-t/10).*sin(5*t);
yt = @(t) exp(-t/10).*cos(5*t);
zt = @(t) t;
fplot3(xt, yt, zt, [-12, 12], 'r-.')

2.绘制三维曲面

(1)平面网格数据的生成:用矩阵X、Y分别存储每一个小矩形顶点的x坐标和y坐标,矩阵X、Y就是该矩阵区域的xy平面网格坐标矩阵。
产生平面区域内的网络坐标矩阵有两种方法
1.利用矩阵运算生成
x = 2:6;
y = (3:8)’;
X = ones(size(y))x;
Y = y
ones(size(x));
(2)利用meshgrid函数生成

[X,Y]=meshgrid(x,y);

其中,参数x、y为向量,存储网格点坐标的X、Y为矩阵。
x = 2:6;
y = (3:8)’;
[X, Y] = meshgrid(x, y);

若根据每一个网格点上的x、y坐标求函数值z,则得到函数值矩阵Z。矩阵X、Y、Z中的各个列向量,对应于一条曲线数据点的坐标。

例1:绘制空间曲线

x = 2:6; 
y = (3:8)';
[X, Y] = meshgrid(x, y);
Z = randn(size(X));
plot3(X,Y,Z)
grid on;

(3)mesh函数和surf函数的调用格式:

mesh(x,y,z,c)
surf(x,y,z,c)

其中,x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。c省略时,颜色的设定正比于图形的高度。
例2 绘制三维曲面图z=xe^(- x^2- y^2)。

t = -2:0.2:2; 
[X, Y] = meshgrid(t);
Z = X .* exp(-X.^2 - Y.^2);
subplot(1,3,1)
mesh(X,Y,Z); 
subplot(1,3,2)
surf(X,Y,Z); 
subplot(1,3,3)
plot3(X,Y,Z); 
grid on

在这里插入图片描述
其他调用格式:
mesh(z,c)
surf(z,c)
当x、y省略时,z矩阵的第二维下标当作x轴坐标,z矩阵的第1维下标当作y轴坐标。

(4)绘制三维曲面的函数

  • 带等高线的三维网格曲面函数meshc。
  • 带底座的三维网格曲面函数meshz。
  • 具有等高线的曲面函数surfc。
  • 具有光照效果的曲面函数surfl。
    例3 用4种方式绘制函数z=(x−1)^2+(y−2) ^2−1的曲面图。其中,x∈[0,2],y∈[1,3]。
[x,y]=meshgrid(0:0.1:2,1:0.1:3);
z=(x-1)^2+ (y-2)^2-1;
subplot(2,2,1);
meshc(x,y,z);title('meshc(x,y,z)')
subplot(2,2,2);
meshz(x,y,z);title('meshz(x,y,z)')
subplot(2,2,3);
surfc(x,y,z);title('surfc(x,y,z)')
subplot(2,2,4);
surfl(x,y,z); title('surfl(x,y,z)')

在这里插入图片描述

(5)标准三维曲面
1.sphere函数

[x,y,z]=sphere(n);

产生3个(n+1)阶的方阵,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。
2.cylinder函数

[x,y,z]=cylinder(R,n);

其中,参数R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。

例4 用cylinder函数分别绘制柱面、花瓶和圆锥面。

subplot(1,3,1);
[x,y,z]=cylinder;
surf(x,y,z);
subplot(1,3,2);
t=linspace(0,2*pi,40);
[x,y,z]= cylinder(2+cos(t),30);
surf(x,y,z);
subplot(1,3,3);
[x,y,z]= cylinder(0:0.2:2,30);
surf(x,y,z);

在这里插入图片描述
例5 用cylinder函数绘制两个相互垂直且直径相等的圆柱面的相交图形。

[x,y,z]= cylinder(1,60);
z=[-1*z(2,:);z(2,:)];
surf(x,y,z)
hold on
surf(y,z,x)
axis equal

在这里插入图片描述
(6)peaks函数
peaks(n)/peaks(V)/peaks(x,y)/peaks

fmeah函数和fsurf函数
用于绘制参数方程定义的曲面

fsurf(funx,funy,funz,uvlims);
fmesh(funx,funy,funz,uvlims);

其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx,funy和funz的自变量的取值范围,用4元向量[umin,umax,vmin,vmax]描述,默认为[-5,5,-5,5]。
例6 绘制螺旋曲面。

funx = @(u,v) u.*sin(v);
funy = @(u,v) -u.*cos(v);
funz = @(u,v) v;
fsurf(funx,funy,funz,[-5 5 -5 -2])
hold on
fmesh(funx,funy,funz,[-5 5 -2 2])
hold off

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Gdfqqdoy.shtml

相关文章

备战数学建模1——MATLAB矩阵,二维图、三维图!(超级全面易懂)

目录 一、矩阵超级基础的内容1.创建一个1行6列的矩阵2.对矩阵中每个元素都加33.plot函数作图。4.多维矩阵与常见运算5.矩阵乘法,和矩阵点乘6.使用矩阵A对方程A*x b求解7.Matlab的迁就补全(标量非标量,不同维度) 二、Matlab四种常见…

MATLAB学习与使用:使用矩阵绘制三维图形

MATLAB绘制三维图形 1.基本的绘图命令 1)plot3函数 plot3(x,y,z)%x,y,z为向量或者矩阵 注意x,y,z全为向量时向量长度必须相同 plot3(x,y,z,b.,MarkerSize,0.5) % MarkerSize 表示点的大小,b.表示绿色的点。 eg.绘制三维螺旋线(向量为参数&…

MATLAB中怎样初始化(创建)二维、三维、四维以及多维矩阵,各维度的索引顺序是怎样的?

目录 1 在MATLAB中初始化二维矩阵2 在MATLAB中初始化三维矩阵3 在MATLAB中初始化四维矩阵4 在MATLAB中初始化N维矩阵 1 在MATLAB中初始化二维矩阵 在MATLAB中初始化一个二维矩阵是很容易的,我们既可以直接把矩阵的元素值写出,比如下面这样: …

matlab的三维数组(三维矩阵)

matlab的三维矩阵与其他编程语言不太一样 比如: test4.java public class test4 {public static void main(String[] args){int[][][] arr new int[][][]{{{1,2,3},{4,5,6},},{{7,8,9},{10,11,12},},};} }这个程序里arr是个2*2*3的数组。 在java里 arr[i][j][k]表…

Java 面向对象基本理解

1. 类和对象 1.1 类和对象的理解【理解】 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合 简单理解:类…

JS面向对象的理解

JS面向对象的理解 1.理解对象1.1.new 操作符 Object 创建对象1.2.字面式创建对象 2.创建对象2.1.工厂模式2.2.构造函数模式2.3.原型模式2.3.1.原型模式2.3.2.理解原型对象2.3.3.原型与in操作符2.3.4.更简单的原型语法2.3.5.原型的动态性2.3.6.原型对象的原型2.3.7.原型对象的问…

【java基础】-谈谈对面向对象理解

一 前言 本篇文章的核心知识如下,主要是帮助大家更好的理解面向对象编程; 二面向对象VS面向过程 2.1 面向过程编程 面向过程编程(Process Oriented Programming )其意指是面向过程编程,what?,过程是什…

对Java面向对象的理解

Java的面向对象的理解 1.思想简述: 面向对象是一种思想。它将数据和操作数据的方法封装在对象中,从而使对象有了一些功能,也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节&am…

如何理解Python中的面向对象

一、认识面向对象是什么 面向过程的程序设计的核心就是过程,就是流水线式的思维,过程就是解决问题的步骤,面向过程的设计就好像一条设计好的流水线,考虑周全什么就处理什么东西。 优点在于极大地降低了写程序的复杂度&#xff0c…

Java面向对象的理解

1. 面向对象 Java 是面向对象的编程语言,对象就是面向对象程序设计的核心。其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可…

如何理解Java中的面向对象

好几次面试都问到了这个问题,回答的也都不好,暂且总结一下: 我的理解是:面向对象是向现实世界模型的自然延伸,这是一种”万物皆对象”的编程思想。在现实生活中的任何物体都可以归为一类事物,而每一…

对于面向对象的简单理解

引言 一直都想写一篇关于面向对象的文章,但是由于之前自己也是一知半解所以也就一直没有付出行动。关于面向对象的这类文章网上已经有很多大牛写过了,在这里呢我也就不班门弄斧了。就简单的说一下我的理解,话不多说接下来进入主题。 什么是…

js面向对象理解

ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,ECMAScript 没有类的概念,因此它的对象…

Python面向对象理解

一,初始面向对象. 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西。 优点是:极大的降低了写程序的复杂度…

面向对象理解——多态

何为多态 定义: 多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。系统在运行时(而非编译时),能够根据其类型确定调用哪个重载的成员函数的能…

面向对象的理解及相关概念(封装,继承,多态)

前言 面向对象程序设计(OOP)是当今主流的程序设计范性,它取代了结构化或过程式编程技术。 一、面向对象是什么? 1、定义: 面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存…

面向对象的理解

一、什么是面向对象? 对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继…

面向对象理解

1.早期发展 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法…

error: unknown file type '.pyx' (from 'pycocotools/_mask.pyx')

在 YOLO v3模型中运用 cocoapi 进行评估模型,安装时报错显示: building pycocotools._mask extension error: unknown file type .pyx (from pycocotools/_mask.pyx) make: *** [all] Error 1可能的解决方法:   运行的 Python 版本不对。 …

sklearn/tree/_criterion.pyx

注解: criterions分为几类,其中有classification criterions与regression criterions。classification criterions是针对离散的,regression criterions是针对连续分布的 本文主要讲解一下RegressionCriterion。 RegressionCriterion用于回归树(Regression Tree 回归树)中…