matlab画三维图像的示例代码(附demo)

当我们学习surface命令时,已经看到了三维作图的一些端倪。在matlab中我么可以调用mesh(x,y,z)函数来产生三维图像。

首先,我们用z=cos(x)sin(y)在-2pi ≤x,y≤ 2pi内的图像来看看:

[x,y] = meshgrid(-2*pi:0.1:2*pi);
z = cos(x).*sin(y);
mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')

显示图像如下:

同样用mesh命令产生z = ye-(x2+y2)的三维图像:

[x,y] = meshgrid(-2:0.1:2);
z = y.*exp(-x.^2-y.^2);
mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')

下面绘制表面带有渐变颜色的图像,可以通过 surf 和 surfc 命令实现,只要简单更改上面例子中的命令为:

surf(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')

则图像如下所示,图像表面的颜色与高度是相称的:

若使用surfc则会在图像中留下映像:

surfc(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')

还可以调用surfl(命令中的'l'表示这是一个光照表面 lighted surface)命令显示三维光照物体的表面,可以使用这个命令产生没有线条的三维图像,图像还可以是彩色的或灰度的。例如仍然产生函数z = ye-(x2+y2)的灰度图像,图像中的阴影可设置为flat、interp、faceted:

surfl(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
shading interp;
colormap(gray);

下面我们使用matlab内置函数来产生像球形或圆柱形这样的基本图像,例如:

t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(1+sin(t));
surf(X,Y,Z),colormap('default');
axis square

会得到如下图像:

试试另一个稍微有点不同的函数,阴影设置为faceted:

t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(1+cos(t));
surf(X,Y,Z),shading faceted;
axis square

若将阴影设置为shading flat,则图像显示为:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Matlab制作视频并转换成gif动态图的两种方法

    一.第一个方法比较简单,就是使用movie(f)直接取生成AVI视频文件. %% f(t)-->f(4*t+12) 并且验证%% function Signal_change() tic%记录程序运行时间 figure n = 0; t = -2*pi:0.01:2*pi; y = sin(t);%周期为2*pi y_result = sin(4*t); plot(t,y,'b'); xlabel('t'); ylabel('Amplitude'); n = n+1; F(n) = getfra

  • 基于MATLAB神经网络图像识别的高识别率代码

    MATLAB神经网络图像识别高识别率代码 I0=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\0 (1).png')); I1=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\1 (1).png')); I2=pretreatment(imread('Z:\data\PictureData\TestCode\SplitDataTest\

  • java和matlab画多边形闭合折线图示例讲解

    1.使用matlab作闭合多边形图 没有找到直接画多边形的函数,只能是将各个点的坐标保存在数组中,将一个点与其相邻的点相连,并将最后一个点与第一个点连接.下面是一个示例的.m文件: 复制代码 代码如下: clear;clc;a=[0 2 4 6 8 10 12 14;0 2 1 4 6 6 5 7];  %要连接的点坐标 x;y[n,m]=size(a);for i=1:m-1;    line([a(1,i),a(1,i+1)],[a(2,i),a(2,i+1)]);  %连接节点line([

  • matlab画三维图像的示例代码(附demo)

    当我们学习surface命令时,已经看到了三维作图的一些端倪.在matlab中我么可以调用mesh(x,y,z)函数来产生三维图像. 首先,我们用z=cos(x)sin(y)在-2pi ≤x,y≤ 2pi内的图像来看看: [x,y] = meshgrid(-2*pi:0.1:2*pi); z = cos(x).*sin(y); mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z') 显示图像如下: 同样用mesh命令产生z = ye-(x2+y2)的三维图

  • 利用Matlab绘制有趣图像的示例代码

    目录 1.随机樱花树 2.苹果绘制 3.南瓜绘制 4.一堆三角形绘制 5.月饼绘制 6.大钻石绘制 7.有趣曲线1 8.有趣曲线2 9.有趣曲线3——蝴蝶曲线 10.有趣曲线4——心形曲线 11.有趣曲线5 12.会害羞的含羞草 13.随机雪景 1.随机樱花树 function sakura % @author:slandarer % 随机形状二叉树樱花树绘制 hold on,axis equal axis(0.5+[-10,50,0,50]) set(gca,'xtick',[],'ytick

  • 如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散点图 #绘制三角螺旋线 from mpl_toolkits import mplot3d %matplotlib inline import matplotlib.pyplot as plt import numpy as np ax = plt.axes(proje

  • python画双y轴图像的示例代码

    很多时候可能需要在一个图中画出多条函数图像,但是可能y轴的物理含义不一样,或是数值范围相差较大,此时就需要双y轴. matplotlib和seaborn都可以画双y轴图像. 一个例子: import seaborn as sns import matplotlib.pyplot as plt # ax1 for KDE, ax2 for CDF f, ax1 = plt.subplots() ax1.grid(True) # ax1.set_ylim(0, 1) ax1.set_ylabel('

  • python 画三维图像 曲面图和散点图的示例

    用python画图很多是根据z=f(x,y)来画图的,本博文将三个对应的坐标点输入画图: 散点图: import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') X = [1, 1, 2, 2] Y = [3, 4, 4, 3] Z = [1, 2, 1, 1] ax.scatter(X, Y

  • 基于Matlab实现中国象棋的示例代码

    目录 设置变量 绘图 绘制棋盘 绘制棋子 棋子移动规则 判断是否可以移动 移动棋子 吃子 设置变量 nRowNum = 8; % 画布行数 nColNum = 9; % 画布列数 offset_x = 0;% 红车坐标起点 offset_y = 0;% 红车坐标起点 chess_name = {{'帥','仕','相','马','車','炮','兵'},{'將','仕','象','马','車','炮','卒'}}; chess_type = [5 4 3 2 1 2 3 4 5 6 6 7 7

  • 基于Matlab绘制小提琴图的示例代码

    目录 violinChart 函数使用方法 基础使用,Y为矩阵 基础使用,Y为向量,X为标签 基础使用,多个图像绘制,并添加图例 violinChart 完整函数 ggtheme violin 函数介绍 ggtheme violin 主题 ggtheme violin 修饰函数代码 本文将为大家详细讲解Matlab中小提琴图的绘制函数及ggtheme主题修饰函数 violinChart 函数使用方法 写了个matlab绘制小提琴图的函数: 1.图中小提琴状区域为核密度曲线. 2.白色方块为25%

  • Matlab实现灰色预测的示例代码

    目录 模型介绍 基础代码 基础代码+修饰 模型介绍 略微带过一下原理: 灰色预测对于趋势不强的数据,将其原始数据进行累加后得到具有明显趋势的新数据进行拟合,假设原数据为: 则新数据集X(1)中数据为: 通常认为累加数据服从指数分布,欸那我们直接假设: 直接进行一个非线性拟合不就完事了,但是,从小学二年级开始,老师就教导我们,像这用指数函数拟合啊,各个参数的变化对于整体曲线的影响效果差别很大啊,直接拟合误差会很大啊,怎么能给他整成一个线性拟合啊?(直接拟合我有试过,能够大体描述趋势并做出预测,但是

  • C++ opencv实现在图片上画一条线示例代码

    1 在图片上用鼠标进行操作,opencv主要用到setMouseCallback()函数. winname 窗口名称 onMouse 鼠标事件的回调函数 userdata 传递给回调函数 还有onMouse函数 event 鼠标事件 x,y 鼠标在图片上的坐标 flags 鼠标事件标志 这里有一个容易搞混的地方 void跟void* 在函数的返回值中, void 是没有任何返回值, 而 void * 是返回任意类型的值的指针. 划线还需要用到line()函数 img 图片名称 pt1 线段起点

  • Matlab实现绘制玫瑰线的示例代码

    目录 绘制效果 基础代码 土味代码 绘制效果 实际上就是在进行曲线: 的可视化,代码非常简单哈: 基础代码 function roseCurve1 set(gcf,'position',get(0,'ScreenSize')); % 坐标区域修饰 ax=gca; hold on ax.XLim=[-.5,7.5]; ax.YLim=[-.5,10.5]; ax.Color=[0 0 0]; ax.DataAspectRatio=[1,1,1]; ax.XTick=[]; ax.YTick=[];

随机推荐