matlab meshgrid例子,对MATLAB中meshgrid的理解

备注: 这些内容是我在阅读了meshgrid源代码及看了http://zhidao.baidu.com/question/169889793.html?an=0&si=1这个帖子之后的总结。

函数功能:

生成绘制3-D图形所需的网格数据。在计算机中进行绘图操作时,

往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x,

y)。

例如, 要在“3<=x<=5,6<=y<=9,z不限制区间”

这个区域内绘制一个3-D图形,如果只需要整数坐标为采样点的话。我们可能需要下面这样

一个坐标构成的矩阵:

(3,9),(4,9),(5,9);

(3,8),(4,8),(5,8);

(3,7),(4,7),(5,7);

(3,6),(4,6),(5,6);

在matlab中我们可以这样描述这个坐标矩阵:

把各个点的x坐标独立出来,得:

3,4,5;

3,4,5;

3,4,5;

3,4,5;

再把各个点的y坐标也独立出来:

9,9,9;

8,8,8;

7,7,7;

6,6,6;

这样对应的x、y结合,便表示了上面的坐标矩阵。

meshgrid就是产生这样两个矩阵,来简化我们的操作。

然后根据(x, y)计算获得z,并绘制出三维图形。

在Matlab命令窗口中键入type meshgrid可以查看该函数的源代码(由此可以理解meshgrid的算法思想), 键入doc

meshgrid或者help meshgrid可以获得帮助文档。

语法格式:

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

上面的描述,我们可以知道,meshgrid返回的两个矩阵X、Y必定是行数、列数相等的,且X、Y的行数都等于输入参数y中元素的总个数,X、Y的列数都等于输入参数x中元素总个数(这个结论可以通过查看meshgrid的源代码得到,可以通过示例程序得到验证)。

[X,Y] = meshgrid(x)

[X,Y,Z] = meshgrid(x,y,z)

程序示例:

示例一:

close all; clear; clc;

x = [3, 4, 5]

y = [6; 7; 8; 9]

[xx, yy] = meshgrid(x, y)

输出:

xx =

3 4 5

3 4 5

3 4 5

3 4 5

yy =

6 6 6

7 7 7

8 8 8

9 9 9

示例二:

>>

x = [3, 4, 5];

y = [6; 7; 8; 9];

[yy, xx] = meshgrid(y, x)

输出结果:

yy =

6 7 8 9

6 7 8 9

6 7 8 9

xx =

3 3 3 3

4 4 4 4

5 5 5 5

示例三:

function main

close all;

clear; clc;

M1;

M2;

end

function M1

x = rand(3,

4);

y = rand(2,

3);

size_of_x =

size(x)

size_of_y =

size(y)

[X, Y] =

meshgrid(x, y);

size_of_X =

size(X)

size_of_Y =

size(Y)

end

function M2

x = rand(3,

4, 2);

y = rand(2,

3);

size_of_x =

size(x)

size_of_y =

size(y)

[X, Y] =

meshgrid(x, y);

size_of_X =

size(X)

size_of_Y =

size(Y)

end

输出结果:

size_of_x =

3 4

size_of_y =

2 3

size_of_X =

6 12

size_of_Y =

6 12

size_of_x =

3 4 2

size_of_y =

2 3

size_of_X =

6 24

size_of_Y =

6 24

最后, 说一下通过阅读meshgrid的源代码复习一下以前的一些下标操作知识:

>> x = [1 2 3 4]

x =

1 2 3 4

>> x([1 1 1 1],:)

ans =

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

就是把x中第1行复制4份。

如果,这个例子不明显,再看个例子:

>> x = [1 2 3 4 5;

6 7 8 9 10;

11 12 13 14 15;

16 17 18 19 20]

x =

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20

>> x([4 2], :) % 依次取出x的第4行和第2行

ans =

16 17 18 19 20

6 7 8 9 10

>> x([4 3 2 1], :) % 按行倒置

ans =

16 17 18 19 20

11 12 13 14 15

6 7 8 9 10

1 2 3 4 5

你可能感兴趣的:(matlab,meshgrid例子)