• Matlab三维绘图


    三维绘图

    1 三维绘图指令

    网状图

    mesh, ezmesh

    绘制立体网状图

    meshc, ezmeshc

    绘制带有等高线的网状图

    meshz

    绘制带有“围裙”的网状图

    曲面图

    surf, ezsurf

    立体曲面图

    surfc, ezsurfc

    绘制带有等高线的曲面图

    surfl

    绘制带有光源的曲面图

    曲线图

    plot3, ezplot3

    绘制立体曲线图

    底层函数

    surface

    Surf函数用到的底层指令

    line3

    plot3函数用到的底层指令

    等高线

    contour3

    绘制等高线

    水流效果

    waterfall

    在x方向或y方向产生水流效果

    影像表示

    pcolor

    在二维平面中以颜色表示曲面的高度

    2 基本XYZ立体绘图命令

    l  mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数 形成的立体网状图:

    x=linspace(-2, 2, 25); % x轴上取25

    y=linspace(-2, 2, 25); % y轴上取25

    [xx,yy]=meshgrid(x, y); % xxyy都是25x25的矩阵

    zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵

    mesh(xx, yy, zz); % 画出立体网状图

    l  surf和mesh的用法类似:

    x=linspace(-2, 2, 25); % x轴上取25

    y=linspace(-2, 2, 25); % y轴上取25

    [xx,yy]=meshgrid(x, y); % xxyy都是25x25的矩阵

    zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是25x25的矩阵

    surf(xx, yy, zz); % 画出立体曲面图

    l  peaks

    为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

    要画出此函数的最快方法即是直接键入peaks:

    peaks

    z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) - 1/3*exp(-(x+1).^2 - y.^2)

    l  我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙:

    [x,y,z]=peaks;

    meshz(x,y,z);

    l  waterfall可在x方向或y方向产生水流效果:

    [x,y,z]=peaks;

    waterfall(x,y,z);

    l  下列命令产生在y方向的水流效果:

    [x,y,z]=peaks;

    waterfall(x',y',z');

    l  meshc同时画出网状图与等高线:

    [x,y,z]=peaks;

    meshc(x,y,z);

    l  surfc同时画出曲面图与等高线:

    [x,y,z]=peaks;

    surfc(x,y,z);

    l  contour3画出曲面在三度空间中的等高线:

    contour3(peaks, 20);

    l  contour画出曲面等高线在XY平面的投影:

    contour(peaks, 20);

    l  plot3可画出三度空间中的曲线:

    t=linspace(0,20*pi, 501);

    plot3(t.*sin(t), t.*cos(t), t);

    亦可同时画出两条三度空间中的曲线:

    t=linspace(0, 10*pi, 501);

    plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);

    1.x,y都属于[-8,8],画出下列式子的三维图像

    Z=

    程序:

    x=linspace(-8, 8, 125); % 在x轴上取25点

    y=linspace(-8, 8, 125); % 在y轴上取25点

    peaks

    z=sin(sqrt(x.*x+y.*y))/sqrt(x.*x+y.*y);

  • 相关阅读:
    增强for循环
    java魔性的类型
    回溯算法
    UE4报错cmd.exe failed with args /c
    C#中GetHashCode的各类实现
    Unity3D中的meta文件笔记
    数值分析笔记(3)——数值计算中的原则
    数值分析笔记(2)——有效数字
    数值分析笔记(1)——误差的来源和分类
    数值分析笔记(0)——数值分析研究的对象和内容
  • 原文地址:https://www.cnblogs.com/fickleness/p/3154882.html
Copyright © 2020-2023  润新知