玖叶教程网

前端编程开发入门

Matlab 应用之绘制三维图形(综合篇)

上帖子介绍了Matlab三维绘图的基础内容(见 http://www.jishulink.com/content/post/280288),

并留下一个思考题,本文就通过对这个思考题的讲解,将三维绘图的命令融汇贯通。

Step 1.数据分析

在做任何Matlab图形,或者说使用任何Matlab函数的时候,数据分析是最重要的步骤。因为:

1. 通过数据分析指导数据结构,才能正确使用函数;

2. 通过数据分析,可以对数据有一个感性的认识,这在很多问题上是至关重要的,也是经验的体现;

好了,我们先看看思考题的数据,如图 1所示。

分析:

1. 数据由一个44行,3列的矩阵组成;

2. 要求绘制的是图像为,x坐标为第一列数据,y坐标为第二列数据,z坐标为第三列数据;

3. 第一列数据总体是递增的,应该说是一个阶梯状的数据;

4. 在每个x轴阶梯上,y轴的数据都是重复[5 10 15 20 25 30]的;

6. 按照y轴数据重复了8个周期;

7. y轴的前6个周期都是6组数据[5 10 15 20 25 30];

8. y轴的后两个周期都是4组数据 [5 10 15 20];

以上就是我通过分析得到数据的8个特点,其实x轴数据和y轴数据,实现的就是格点矩阵,也就是meshgrid函数的功能,我们可以不用x轴与y轴的数据,只用z轴的数据,然后用meshgrid矩阵生成x,y轴的数据,这一点要深刻认识格点矩阵的本质,在本文的最后将讨论格点矩阵的结构。

Step 2.代码讲解

clc

clf

clear all;

load('data.mat'); %载入数据,在文档中会一并给出,就是z轴的数据

x_0=500:500:3000; %生成x轴的格点分段一[500 1000 1500 2000 2500 3000]

y_0=5:5:30; %生成y轴的格点分段一[5 10 15 20 25 30]

[xx_0,yy_0]=meshgrid(x_0,y_0); %根据x,y轴格点分段一生成格点矩阵一

Z_0=reshape(Z(1:36),[6,6]); %使得z轴数据的1到36行,组成6*6的矩阵形式,以便搭配格点矩阵一使用

surf(xx_0,yy_0,Z_0); %做出曲面图一

hold on %保持图形

x_1=3000:250:3500; %生成x轴的格点分段二[3000 3250 3500]

y_1=5:5:20; %生成y轴的格点分段二[5 10 15 20]

[xx_1,yy_1]=meshgrid(x_1,y_1); %根据x,y轴格点分段二生成格点矩阵二

Z_1_1=[Z(31:34);Z(37:end)]; %抽取出与格点矩阵搭配的Z轴数据

Z_1=reshape(Z_1_1,[4,3]); %将抽取的Z轴数据组成4*3的形式,搭配格点矩阵二

surf(xx_1,yy_1,Z_1); %做出曲面图二

说明:

1.为什么要分图形一与二

回答: 见数据分析 7,8两点;

2.为什么第二个曲面的x 要从 3000开始,而不是 3250

回答:如果从3250开始,图形将发生断裂,从3000开始,可以实现曲面的“缝合”;

Step 3.绘制结果

用文中所示的代码出的图如图2所示,如果不使用本文的图像“缝合技术”,将出现图3的断面。

Step 4.meshgrid 函数数据

运行代码

x_0=500:500:3000; %生成x轴的格点分段一[500 1000 1500 2000 2500 3000]

y_0=5:5:30; %生成y轴的格点分段一[5 10 15 20 25 30]

[xx_0,yy_0]=meshgrid(x_0,y_0); %根据x,y轴格点分段一生成格点矩阵一

我们来看看所生成的格点矩阵式什么款式的。

可以看到:

1.xx_0与yy_0都是6*6的矩阵;

2. xx_0的数据每行都是一样的,由[500 1000 1500 2000 2500 3000] 构成;

3. yy_0的数据每列都是一样的,由[5 10 15 20 25 30]构成;

运行

Z_0=reshape(Z(1:36),[6,6]); %使得z轴数据的1到36行,组成6*6的矩阵形式,以便搭配格点矩阵一使用

我们看看与之搭配的Z_0是什么样子的

可以看到,Z_0 也应该是一个6*6的矩阵,每一列,对应每一个y轴周期

本案例相关代码及数据见 http://www.jishulink.com/content/doc/4ff96c69-23fc-4bff-9a0d-9de3a97d763c

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言