精华内容
下载资源
问答
  • MATLAB三维

    2018-10-24 17:16:50
    新手收集的一些资料 MATLAB三维重建 不知道怎么设置成不要分数
  • MATLAB三维绘图.doc

    2021-03-11 22:08:17
    MATLAB三维绘图.doc
  • matlab三维绘图

    2014-05-27 10:02:22
    MATLAB三维绘图讲解,里面有matlab三维绘图常用命令,绘图演示和结果。
  • matlab三维地形图

    2016-11-26 10:00:45
    MATLAB 三维地形图代码
  • MATLAB三维拟合

    2015-09-06 13:58:55
    MATLAB三维拟合,只要把自己数据导入进去就可以用啦
  • matlab三维绘图教程文件.ppt
  • 点云进行matlab三维重建,通过双目相机进行匹配,得到点云,最后利用点云进行三维重建
  • MATLAB三维聚类代码实例
  • 【MATLAB】MATLAB三维曲面绘制【详细教程】

    万次阅读 多人点赞 2020-08-06 18:37:39
    于是这些天花了些功夫重新梳理了一遍关于Matlab三维曲面作图的一些注意事项,在此记录备案,便于以后使用查找。 任务要求:已知函数形式,绘制三维曲面 此次以下函数为例,介绍Matlab三维曲面的绘制方式 z=1−x2+(y...

    近日需要用Matlab绘制一些三维曲面图,并对其进行标注。于是这些天花了些功夫重新梳理了一遍关于Matlab三维曲面作图的一些注意事项,在此记录备案,便于以后使用查找。

    任务要求:已知函数形式,绘制三维曲面

    此次以下函数为例,介绍Matlab三维曲面的绘制方式
    z=1x2+(y1)2 z = 1-\sqrt{x^{2}+(y-1)^{2}}

    • 成品效果图如下:

    Example

    绘图讲解:

    1. 绘制三维图像

    • [X,Y] = meshgrid(x,y);:将xy网格化,得到网格化的后的变量XY

    所谓的网格化即将原本的一维的坐标轴xy组合,成为一个二维的平面XY。可能有些人会觉得不太好理解,我也不太能用语言描述清楚。不过在工作区点开XY查看其内部的具体值之后即可理解。

    • Fig = mesh(X,Y,Z);:以XYZ为数据绘制三维曲面,并将此曲面赋值给Fig

    在最开始的时候我都是用mesh(X,Y,Z)而不用其返回值,后来发现使用返回值调整参数更加容易(这个具体后续细说)

    在掌握这两段代码后,能够绘制一个最基本的三维曲面,代码如下:

    clear;clc; %清除前置数据
    
    %数据预处理
    x = linspace(0,1,50); %设置x轴的范围
    y = x; %设置y轴范围
    [X,Y] = meshgrid(x,y); %将其x,y轴网格化
    Z = 1-sqrt((X).^2+(Y-1).^2); %直接计算
    
    %绘制曲面
    Fig = mesh(X,Y,Z); %绘制三维曲面图
    

    由此我们能得到一个非常简陋的三维曲面,而这样的曲面距离我们的要求还有一段距离。

    Example 1

    2. 坐标轴的设置

    上图最明显的感觉就是太空了,因此我们需要为其加上坐标轴:

    • xlabel('x');:设置x轴的变量为x
    • ylabel('$y$','interpreter','latex');:将y轴的变量设置为LaTeX格式的y(这里的代码和LaTeX公式代码完全一致)
    • zlabel('$z$','interpreter','latex','FontSize',18);:除上述功能外,设置z轴变量的字体大小为18pt
    • title('$z = 1-\sqrt{x^{2}+(y-1)^{2}}$','interpreter','latex','FontWeight','bold');:命名标题且加粗

    坐标轴的设置还有很多功能,比如说替换字体这种,可以通过帮助文档(在命令行输入help text查看)

    注:这里help的是text,这样才有足够详细的可选项说明

    我们通过以下代码设置坐标轴的格式:(这里的L(i)同上述Fig可以去掉)

    L(1) = xlabel('x');
    L(2) = ylabel('$y$','interpreter','latex');
    L(3) = zlabel('$z$','interpreter','latex','FontSize',18);
    L(4) = title('$z = 1-\sqrt{x^{2}+(y-1)^{2}}$','interpreter','latex','FontWeight','bold');
    

    现在图片变成了这样:
    Example 2

    这里可以体会以下LaTeX公式字体和普通字体的区别,加上坐标轴后看起来稍微好些,但是还有待改进。接下来我们设置图片的颜色和色条。

    3. 曲面颜色和色条

    • colormap winter;:设置曲面颜色为winter格式

    wintermatlab自带的一种曲面颜色格式,还有其他可选格式可以通过help colormap查看

    • colorbar;:在曲面旁边增设colorbar

    colorbar的位置可以通过colorbar('Position',Location);进行调整,其中Location为其相对于图片比例的坐标(非图上坐标)

    增加代码为:

    %此处将上述的坐标轴文字格式给统一了
    colormap winter; %设置colormap的格式
    colorbar; %加上色条
    

    此时图片情况变成了:

    Example 3

    看上去图片基本成型,但是还不好看,我们可以通过旋转,设置坐标轴的范围等效果,对图片进行优化。

    4. 图片的旋转和缩放

    • view(az,el);:设置观看的视角为(az,el)
    • axis([xmin xmax ymin ymax zmin zmax]);:设置坐标轴的范围
    • set(gcf,'Units','centimeters','Position',[Start_x Start_y Length Width]);:设置图片的位置

    其中Start_xStart_y分别代表图像在屏幕的起始位置(可任意设置)

    LengthWidth分别代表图像的长度和宽度的具体值(根据自己的需要设置)

    于是在后续增加如下代码:

    view([50,20]); %设置观察角度
    axis([min(x) max(x) min(y) max(y)... %设置坐标范围
            min(min(Z)) max(max(Z))]); %这里由于Z是二维需要用两层最值函数
    set(gcf,'Units','centimeters','Position',[6 6 20 15]); %设置图片大小
    

    最新的图片如下,就有点那种味道了

    Example 4

    注:如何确定旋转时azel的值?

    1. 在完成绘图后点击如下所示的旋转图标,可实现图像的旋转

    旋转图标

    1. 将图片旋转到心仪位置时,记录下其azel
      Az 和 El

    5. 图片的保存

    图片绘制完成之后,可以保存为各种格式,原本我都是通过手动点击的方式对图片进行保存。不过后来体会到一次编写代码保存的快乐过后,就再也懒得动手保存。在此分享Matlab中保存图像的代码:

    • saveas(Fig,'Example.png');:将图片Fig(就是在mesh时返回的值),保存为Example.png文件

    同时还可以保存为epspdfMatlab能保存的文件格式

    注:如果出现保存为eps格式图片失去颜色的状况,可使用代码saveas(Fig,'Example.eps','psc2');

    完整代码:完成此图的完整代码

    % 调用函数文件
    % % function [ Z ] = Func_Sur( X, Y )
    % % %需要绘制的曲面函数
    % % Z = 1-sqrt((X).^2+(Y-1).^2);
    % % end
    
    clear;clc; %清除前置数据
    
    %数据预处理
    x = linspace(0,1,50); %设置x轴的范围
    y = x; %设置y轴范围
    [X,Y] = meshgrid(x,y); %将其x,y轴网格化
    Z = 1-sqrt((X).^2+(Y-1).^2); %直接计算
    %Z = Func_Sur(X,Y); %计算对应的Z坐标 建议函数形式调用
    
    %相关参数
    FontS = 16; %大小为12pt
    FontW = 'bold';  %粗细为加粗 [不加粗用normal或缺省]
    az = 50; el = 20; %旋转的角度设置
    Length = 20; Width = 15; %设置图片长宽
    Start_x = 6; Start_y = 6; %设置图片起始位置
    
    %图像绘制
    figure(1) %定义所绘图像为Figure的第一个
    Fig = mesh(X,Y,Z); %绘制三维曲面图
    colormap winter; %设置colormap的格式
    colorbar; %加上色条
    
    %图像调整
    view([az,el]); %设置观察角度
    axis([min(x) max(x) min(y) max(y)... %设置坐标范围
            min(min(Z)) max(max(Z))]) %这里由于Z是二维需要用两层最值函数
    set(gcf,'Units','centimeters','Position',[Start_x Start_y Length Width]); %设置图片大小
    
    %坐标调整(设置为LaTeX文字格式)
    L(1) = xlabel('$x$','interpreter','latex','FontSize',FontS,'FontWeight',FontW);
    L(2) = ylabel('$y$','interpreter','latex','FontSize',FontS,'FontWeight',FontW);
    L(3) = zlabel('$z$','interpreter','latex','FontSize',FontS,'FontWeight',FontW);
    L(4) = title('$z = 1-\sqrt{x^{2}+(y-1)^{2}}$','interpreter','latex','FontSize',FontS,'FontWeight',FontW);
    
    %图像保存
    saveas(Fig,'Example.png'); %保存为.png格式
    %eps格式保存:需增加'psc2'不然图像为黑白
    %saveas(Fig,'Example.eps','psc2');
    
    展开全文
  • matlab三维绘图讲义

    2015-06-17 22:15:04
    matlab三维绘图讲义,不知道有没有人需要
  • 介绍MATLAB三维图形的建模、着色、光照、材质、透明性和交互操作全部内容。
  • matlab三维作图教程

    2013-06-22 12:39:34
    matlab三维作图教程
  • 关于MATLAB三维绘图命令的解释和具体应用,通过部分代码引导读者更好的适用MATLAB了解三维视图方面的相关知识。
  • matlab三维重建,内涵代码,原理解析,希望对有用的朋友提供帮助。
  • matlab 三维重建 曲面转实体 Surface recostruction surf to solid
  • MATLAB三维绘图(一)三维基础绘图

    千次阅读 2020-03-09 10:27:31
    MATLAB三维绘图(一)三维基础绘图   三维图就是在二维图的基础上多增加了一维,实质上在MATLAB中绘制的都是三维图。简单看一下二维图是怎样变成三维图的,使用plot3函数可以很清楚的看出来。示例: %% 简单理解三维...

    MATLAB三维绘图(一)三维基础绘图

      三维图就是在二维图的基础上多增加了一维,实质上在MATLAB中绘制的都是三维图。简单看一下二维图是怎样变成三维图的,使用plot3函数可以很清楚的看出来。示例:

    %% 简单理解三维画图
    clear; clc; close all;
    x=0:0.1:5*pi; 
    z1=sin(x); 
    z2=sin(2.*x); 
    z3=sin(3.*x);
    y1=zeros(size(x)); 
    y3=ones(size(x)); 
    y2=y3./2;
    plot3(x,y1,z1,'r',x,y2,z2,'b',x,y3,z3,'g');  % 画出三条不同的直线显示的是三维图像
    grid on; % 显示网格
    xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');
    

    效果显示:
    在这里插入图片描述
    1、使用最简单的三维画图函数plot3来认识一下三维图。示例1:弹簧图

    %% 螺旋状图(弹簧)
    clear; clc; close all;
    t = 0:pi/50:10*pi;
    plot3(sin(t),cos(t),t);  % 使用plot3进行绘制三维曲线图
    grid on;   % 显示网格
    axis square;   % 坐标边框尺度大小相同
    

    效果显示:
    在这里插入图片描述
    示例2:螺旋图:

    %% 螺旋状图(盘香)
    clear; clc; close all;
    turns = 40*pi;
    t = linspace(0,turns,4000);
    x = cos(t).*(turns-t)./turns;
    y = sin(t).*(turns-t)./turns;
    z = t./turns;
    plot3(x,y,z); % 使用plot3绘制
    grid on;
    

    效果显示:
    在这里插入图片描述
    2、通过meshgrid函数生成网格来比较surf函数和mesh函数的区别,了解meshgrid函数的用法
    。示例:

    %% 比较surf和mesh的区别
    clear; clc; close all;
    x = -3.5:0.2:3.5; y = -3.5:0.2:3.5;
    [X,Y] = meshgrid(x,y);  % 获取网格
    Z = X.*exp(-X.^2-Y.^2);  % 设定Z的范围
    subplot(1,2,1); 
    mesh(X,Y,Z);  % 显示绘图的线,但是表格中间没有填充颜色
    title('mesh draw');
    subplot(1,2,2); 
    surf(X,Y,Z);  % 显示绘图的线,表格中间有填充的颜色
    title('surf draw');
    

    效果显示:
    在这里插入图片描述

    想了解更多绘图信息,请看下面博文:
    二维:
    MATLAB二维绘图(一)使用plot函数进行简单绘图
    MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息
    MATLAB二维绘图(三)操作绘图句柄显示特定的效果
    MATLAB二维绘图(四)其他特殊的二维绘图函数介绍及用法
    fill填充函数解析及用法示例

    三维:
    MATLAB三维绘图(二)使用隐函数作三维图
    MATLAB三维绘图(三)绘制等值线图
    MATLAB三维绘图(四)绘制特殊的三维图
    MATLAB三维绘图(五)高级三维绘图

    展开全文
  • //////////////////////////////// matlab三维点坐标生成点云ply
  • MATLAB三维绘图(五)高级三维绘图

    千次阅读 2020-03-09 12:12:31
    MATLAB三维绘图(五)高级三维绘图 1、colorbar查看三维绘图中的内建颜色表,示例: %% 画三维图 clear; clc; close all; [x, y] = meshgrid(-3:.2:3,-3:.2:3); % 生成网格 z = x.^2 + x.*y + y.^2; % z的表达式 ...

    MATLAB三维绘图(五)高级三维绘图

    1、colorbar查看三维绘图中的内建颜色表,示例:

    %% 画三维图
    clear; clc; close all;
    [x, y] = meshgrid(-3:.2:3,-3:.2:3);   % 生成网格
    z = x.^2 + x.*y + y.^2;  % z的表达式
    subplot(1,2,1);
    surf( x, y, z);   % 画三维图
    box on; 
    set(gca,'FontSize', 16,'xLim',[-4 4],'yLim',[-4 4]); % 设置字体颜色和坐标
    zlabel('z'); xlabel('x'); ylabel('y');
    subplot(1,2,2);
    imagesc(z); % 获取在z轴上的颜色深度表
    colorbar;  % 显示颜色条
    axis square;   % 坐标相等
    xlabel('x'); ylabel('y');
    

    效果显示:
    在这里插入图片描述
    2、使用colormap设置指定的颜色表,示例:

    %%  使用colormap函数指定使用的颜色表
    clear; clc; close all;
    x=-10:0.1:10;                   %绘图数据
    y=-10:0.1:10;
    [X,Y]=meshgrid(x,y);
    z=X.^2+Y.^2;
    figure;                         %图形窗口
    surf(x,y,z);                    %三维图的绘制函数
    colormap('cool');               %设置颜色
    shading interp;
    axis square;                    %坐标轴设置
    xlabel('x');                    %图形标注
    ylabel('y');
    zlabel('z');
    

    效果显示:
    在这里插入图片描述
    3、使用view函数设定观察三维图形的视角,示例:

    %% 使用view设定不同的视角去看图形
    clear; clc; close all;
    sphere(50);  % 画球
    shading flat;  % 显示风格
    material shiny;
    axis vis3d off;  % axes画板
    set(gcf,'Color',[1 1 1]);  % 设置figure板为白色
    view(-45,20);   % 设置固定角度去看图
    

    效果显示:
    在这里插入图片描述
    4、使用light函数增加光照,示例:

    %% 增加光照
    clear; clc; close all;
    sphere(50);  % 画球
    shading flat;  % 显示风格
    light('Position',[1 3 2]);  % 光照的位置
    light('Position',[-3 -1 3]);
    material shiny;
    axis vis3d off;  % axes画板
    set(gcf,'Color',[1 1 1]);  % 设置figure板为白色
    

    效果显示:
    在这里插入图片描述
    5、获取light函数句柄设置使用光照的颜色,示例:

    %% 获取光照句柄显示不同的光照的效果
    clear; clc; close all;
    [X, Y, Z] = sphere(64); % 画球,并且获取坐标值
    h = surf(X, Y, Z); 
    axis square vis3d off; % 坐标尺度相同,并且不显示axes画板
    reds = zeros(256, 3);  % 创建一个256*3的零矩阵
    reds(:, 1) = (0:256.-1)/255;
    colormap(reds);   % 显示颜色
    shading interp; 
    lighting phong;  % 设置光照
    set(h, 'AmbientStrength', 0.75, 'DiffuseStrength', 0.5);
    L1 = light('Position', [-1, -1, -1]);  % 获取光照的位置句柄
    set(L1, 'Position', [-1, -1, 1]);  % 补光
    set(L1, 'Color', 'g');  % 补绿光
    

    效果显示:
    在这里插入图片描述
    6、显示光的效果,示例:

    %% 显示光的效果
    clear; clc; close all;
    v = [0 0 0; 1 0 0 ; 1 1 0; 0 1 0; 0.25 0.25 1; ...
    0.75 0.25 1; 0.75 0.75 1; 0.25 0.75 1];
    f = [1 2 3 4; 5 6 7 8; 1 2 6 5; 2 3 7 6; 3 4 8 7; 4 1 5 8];
    subplot(1,2,1); 
    patch('Vertices', v, 'Faces', f, ...
    'FaceVertexCData', hsv(6), 'FaceColor', 'flat');
    view(3);
    axis square tight; 
    grid on;
    subplot(1,2,2); 
    patch('Vertices', v, 'Faces', f, ...
    'FaceVertexCData', hsv(8), 'FaceColor', 'interp');
    view(3); 
    axis square tight;
    grid on;
    

    效果显示:
    在这里插入图片描述
    7、加载MATLAB提供的数据显示一个三维地图效果,示例:

    %% 绘制地图
    clear; clc; close all;
    load cape
    X=conv2(ones(9,9)/81,cumsum(cumsum(randn(100,100)),2));
    surf(X,'EdgeColor','none','EdgeLighting','Phong',...
    'FaceColor','interp');
    colormap(map); 
    caxis([-10,300]);
    grid off; 
    axis off;
    

    效果显示:
    在这里插入图片描述
    想了解更多绘图信息,请看下面博文:
    二维:
    MATLAB二维绘图(一)使用plot函数进行简单绘图
    MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息
    MATLAB二维绘图(三)操作绘图句柄显示特定的效果
    MATLAB二维绘图(四)其他特殊的二维绘图函数介绍及用法
    fill填充函数解析及用法示例

    三维:
    MATLAB三维绘图(一)三维基础绘图
    MATLAB三维绘图(二)使用隐函数作三维图
    MATLAB三维绘图(三)绘制等值线图
    MATLAB三维绘图(四)绘制特殊的三维图
    MATLAB三维绘图基础meshgrid函数的用法解析

    展开全文
  • [Matlab科学绘图] Matlab三维绘图总结

    千次阅读 多人点赞 2019-06-16 10:25:41
    主要对matlab三维绘图函数进行总结并展示一下绘图结果,重点不在函数解读,在于函数介绍,函数的具体使用可以查看matlab的help文档。 函数名 说明 line,plot3,ezplot3 绘制三维曲线 mesh,ezmesh ...

    主要对matlab三维绘图函数进行总结并展示一下绘图结果,重点不在函数解读,在于函数介绍,函数的具体使用可以查看matlab的help文档。

    函数名 说明
    line,plot3,ezplot3 绘制三维曲线
    mesh,ezmesh 绘制三维网状图
    meshc,ezmeshc 绘制带有等高线的三维网状图
    meshz 绘制带有“围裙”的网状图
    surf,ezsurf 绘制三维曲面图
    surfc,ezsurfc 绘制带有等高线的三维曲面图
    surfl 绘制带有光照的三维曲面图
    surfnorm 计算或者显示三维表面法向
    contour3 绘制三维等高线图
    waterfall 绘制带有水流效果的三维图
    pcolor 绘制以颜色表示高度的图形

    1. line,plot3,ezplot3绘制三维曲线

    t=linspace(0,pi,401); %生成图形窗口
    xf=inline('sin(t*8)*2'); %生成内联函数
    yf=inline('cos(t*8)*3');
    s(1)= subplot(131);
    %利用函数line绘制三维曲线
    line(sin(t*8),cos(t*8),t);
    s(2)=subplot(132);
    %利用plot3绘制两条曲线
    plot3(sin(t*8)/2,cos(t*8)/2,t,'k',sin(t*16),cos(t*16),t,'r:');
    s(3)=subplot(133);
    %根据符号表达式绘制三维曲线
    ezplot3(xf,yf,inline('t'),[-3,3]);
    axis equal;
    %设置坐标轴视角
    view(s(1),[-33,14]);
    view(s(2),[-33,14]);
    view(s(3),[44,62]);

    2.mesh绘制三维网格图

    [X,Y]=meshgrid(-2:0.2:2, -2:0.2:2);%生成坐标格网矩阵
    Z=X.*exp(-X.^2-Y.^2);
    subplot(131);mesh(X,Y,Z);%绘制网状图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132);mesh(X,Y,Z,rand(size(Z)));%绘制随机彩色网状图
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133);mesh(X,Y,Z,2*ones(size(Z)),'EdgeColor','k');%绘制单色网状图
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    3.ezmesh绘制三维网格图

    zfun=inline('sqrt(1-s^2-t^2)');%定义内联函数
    xs=inline('cos(s)*cos(t)');
    ys=inline('cos(s)*sin(t)');
    zs=inline('sin(s)');
    subplot(131);ezmesh(zfun,100);%绘制网状图并指明采样点数
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132);ezmesh(zfun,[-1,1],20);
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133);ezmesh(xs,ys,zs,[-pi,pi],20);
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    改变ezmesh绘制网状图的着色方案

    xs=inline('cos(s)*cos(t)');
    ys=inline('cos(s)*sin(t)');
    zs=inline('sin(s)');
    subplot(131);ezmesh(xs,ys,zs,[0,pi],16);
    view([-39,56])
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132);ezmesh(xs,ys,zs,[0,pi],16);
    view([-39,56])
    S1=get(gca,'Children');
    set(S1,'CData',rand(size(get(S1,'CData'))));%通过句柄对网状图着色
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133);ezmesh(xs,ys,zs,[0,pi],16);
    view([-39,56])
    S1=get(gca,'Children');
    set(S1,'EdgeColor','k');%通过句柄对网状图着色
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    5.meshc绘制带有等高线的网状图

    [X,Y,Z]=peaks(30);%生成坐标数据
    subplot(121),meshc(Z);%生成带等高线的网状图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),m=meshc(X,Y,Z,Z);
    set(m(1),'EdgeColor','k');%通过句柄改变属性
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    

    6.ezmeshc绘制带有等高线的网状图

    subplot(131),ezmeshc('imag(atan(x+i*y))',[-4,4]);
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132),ezmeshc('real(log(x+i*y))',[-4,4],30);
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    S2=get(gca,'Children');set(S2(end),'EdgeColor','k');
    subplot(133),ezmeshc('real(log(x+i*y))',[-4,4],'circ');
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

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

    [X,Y,Z]=peaks(30);%生成坐标数据
    subplot(121),meshz(Z);%生成带"围裙"的网状图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),m=meshz(X,Y,Z,Z);
    set(m(1),'EdgeColor','k');%通过句柄改变属性
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    

    8.surf绘制三维曲面图

    [x,y]=meshgrid(linspace(-3,3,31));%生成格网坐标
    z=(x-y).*exp(-(x.^2+y.^2)/2);
    subplot(121),surf(x,y,z);%绘制曲面图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),surf(x,y,z,'EdgeColor','flat');
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    

    9.ezsurf根据数学表达式绘制三维曲面

    funx=inline('sin(s)*t');%定义数学表达式
    funy=inline('cos(s)*t');
    funz=inline('sinc(t)');
    subplot(231),ezsurf(@(x,y) funz(x)*cos(y));%绘制曲面图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(232),ezsurf(@(x,y) sin(x*2)*sinc(y),[-pi,pi]);%绘制曲面图,并设定网格线属性
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(233),ezsurf(funx,funy,funz);%绘制曲面图,并设定网格线属性
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    subplot(234),ezsurf(@(s,t) funx(s,t)*sin(t),@(s,t) funy(s,t)*cos(t^2),...
                        @(s,t) funz(t)*sinc(s),[-2,2]);%绘制曲面图,并设定网格线属性
    xlabel('(d)','Fontsize',14,'Fontname','Times New Roman');
    subplot(235),ezsurf(@(s,t) funz(t)*sin(s),30);%绘制曲面图,并设定网格线属性
    xlabel('(e)','Fontsize',14,'Fontname','Times New Roman');
    subplot(236),ezsurf(@(s,t) exp(-[s^2+t^2]),[-2,2],2,'circ');%绘制曲面图,并设定网格线属性
    xlabel('(f)','Fontsize',14,'Fontname','Times New Roman');
    

    10.surfc绘制带有等高线的曲面

    [x,y]=meshgrid(linspace(-4,4,30));%生成采样数值点
    z=3*(x-1).^2.*exp(-x.^2-(y-1).^2)-8*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)-...
      1/4*exp(-(x+1).^2-y.^2);
    subplot(121),surfc(x,y,z);%绘制三维曲面
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),surfc(x,y,z,'EdgeColor','k','FaceColor','None');%设置曲面颜色属性
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    

    ezsurfc绘制带有等高线的曲面

    subplot(121)
    ezsurfc(@(x,y)sin(x)*exp(-x.^2-y.^2));
    subplot(122)
    ezsurfc(@(x,y)sin(2*y)*exp(-x.^2-y^2/2),[-2,2],'circ');
    view([-111,42])

    11.surfl绘制带有光照效果的曲面

    [x,y,z]=peaks(30);
    subplot(121),surfl(x,y,z);
    shading interp;%着色淡化处理
    colormap(gray);
    axis([-3,3,-3,3]);view(3);%设置颜色为灰度、坐标轴范围和视角
    subplot(122)
    surfl(x,y,z,[0.8,0.2,0.8],'light');%带有光照效果
    shading interp;
    axis([-3,3,-3,3]);view(3);

    12.surfnorm计算或者显示三维表面法向

    [X,Y,Z]=peaks(40);
    surfnorm(X,Y,Z);xlim([-3,3]);ylim([-3,3]);
    

    13.contour3绘制三维等高线

    subplot(121),contour3(peaks(40));%绘制三维等高线
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),mesh(peaks(40),'EdgeColor',[0.85,0.85,0.85]);%绘制三维网状曲面,并设置网格线为浅灰色
    hold on
    contour3(peaks(40));
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    

    14.waterfall绘制具有流水效果的的曲面,瀑布图

    [x,y,z]=peaks(40);
    subplot(131),waterfall(peaks(40));%绘制具有流水效果的曲面
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132),waterfall(peaks(40),rand(40));%绘制具有流水效果的曲面
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133),w=waterfall(x',y',z');%绘制具有流水效果的曲面
    set(w,'EdgeColor','k');
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    15.pcolor绘制以颜色表示高度值的图形

    [x,y,z]=peaks(20);
    subplot(131),pcolor(x,y,z);%伪色绘图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132),p=pcolor(x,y,z);
    set(p,'EdgeColor','flat');%除去网格线
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133),hi=image(z);
    set(hi,'CDataMapping','scaled');%设置颜色映像属性
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    set(gca,'YDir','normal');
    

    16.曲面切割效果

    水平方向切割

    [x,y,z]=peaks(800);
    subplot(131),surf(x,y,z);shading interp;
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    z(z>4)=2;
    z(z<-4)=-4;
    subplot(132),surf(x,y,z);
    view(-48,52);shading interp;
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133),surf(x,y,-z);
    view(-48,52);shading interp;
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    任意切割

    [x,y,z]=peaks(200);
    z1=z;
    z1(x<0&y>0)=nan;%利用NaN切割曲面
    z2=z;
    z2(sqrt(x.^2+y.^2)<1.2)=nan;
    subplot(131),surf(x,y,z);
    shading interp;
    xlim([-3,3]);ylim([-3,3]);
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132),surf(x,y,z1);
    shading interp;
    xlim([-3,3]);ylim([-3,3]);
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133),surf(x,y,z2);
    shading interp;
    xlim([-3,3]);ylim([-3,3]);
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    17.cylinder生成关于z轴旋转对称的螺旋体坐标

    r=2+cos(linspace(0,pi*2));%生成半径向量
    [x1,y1,z1]=cylinder(r);%生成螺旋体坐标
    [x2,y2,z2]=cylinder(r,30);
    subplot(131),cylinder(r);%生成三维螺旋体
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(132),surf(x1,y1,z1);
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    subplot(133),mesh(x2,y2,z2);
    xlabel('(c)','Fontsize',14,'Fontname','Times New Roman');
    

    18.sphere生成单位球体坐标

    [x,y,z]=sphere;
    subplot(121),sphere;
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),surf(x,y,z);
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    

    19.slice绘制三维切片图

    [x,y,z]=meshgrid(-2:0.2:2,-2:0.25:2,-2:0.16:2);
    v=x.*exp(-x.^2-y.^2-z.^4);
    [xi,yi]=meshgrid(-2:0.1:2);
    zi=6*exp(-[xi.^2+yi.^2]).*xi;%计算完全切面轴坐标
    zi(zi>1)=1;zi(zi<-1)=-1;%限制zi取值范围
    subplot(121),slice(x,y,z,v,[-1.2 0.8 2],2,[-2 -0.2]);%绘制切片图
    xlabel('(a)','Fontsize',14,'Fontname','Times New Roman');
    subplot(122),slice(x,y,z,v,zi,xi,yi);
    xlabel('(b)','Fontsize',14,'Fontname','Times New Roman');
    
    

    参考文献

    刘正君.《MATLAB科学计算与可视化仿真宝典》

     

    展开全文
  • 3D with rotation on matlab 三维装箱问题代码 实测可以运行 MATLAB代码 欢迎下载
  • MATLAB三维绘图(四)绘制特殊的三维图

    千次阅读 2020-03-09 11:59:28
    MATLAB三维绘图(四)绘制特殊的三维图 1、使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 7 10.5 8.5]; figure; subplot(121); pie3(x) %绘制三维饼图 ...
  • MATLAB三维图形处理

    2019-10-18 08:35:39
    MATLAB三维图形处理quick learn透视镂空裁剪 quick learn 透视:在绘图命令后加入hidden off命令 镂空: 裁剪: 透视 在绘图命令后加入hidden off命令 示例 clc;clear all;close all; figure subplot(121); mesh...
  • matlab三维重构代码

    2018-06-06 16:53:01
    一个关于matlab进行三维图像重构的小例子,初学者可以用以借鉴。
  • matlab三维曲面完整代码概述 该存储库包含以下代码中计算和可视化安全集所必需的代码: Chapman, et al., “Reachability Analysis as a Design Tool for Stormwater Systems,” in 6th IEEE Conference on ...
  • matlab三维 图表

    2015-04-07 16:35:39
    matlab 绘制三维图形, 比较简单,类似于二维图的绘制
  • matlab三维绘图部分

    2019-04-13 16:43:03
    matlab三维绘图部分 一.空间曲线 1、 一条曲线 在区间[0,10*pi]画出参数曲线x=sin(t),y=cos(t), z=t. t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) rotate3d 2.多条曲线 画多条曲线观察函数Z=(X+Y).^2. x...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,355
精华内容 2,542
关键字:

matlab三维

matlab 订阅