今天学了一个很牛的MATLAB内置函数——meshgrid()。其语法如下:
[X, Y] = meshgrid(c, r)
c 和 r 都是一维数组,X和Y 都是二维数组,规模是一样但是内容不一样。X和Y的规模是这样的:以 c 的长度作为列数,以 r 的长度作为行数。X的内容是这样的:X的每一列都是同一元素,与 c 对应的列数下标的元素一致;Y的内容是这样的:Y的每一行都是同一元素,与 r 对应的行数下标的元素一致。不好懂,直接举个例子:
c = [1, 3];
r = [2, 4, 6];
[X, Y] = meshgrid(c, r);
% 结果如下:
X = [1, 3; Y = [2, 2;
1, 3; 4, 4;
1, 3] 6, 6]
好了讲清楚了,可能有同学就会问,哪里牛了,就是一个很难懂而且感觉没什么用的函数。第一感觉确实如此,先不谈它的作用,先来看看一张图片:
一张很普通的图片,甚至画的有点丑。但是仔细观察,如果将所有坐标的行和列拆开,所有行形成一个二维数组,所有列形成一个二维数组,那么就是这样的:
有没有感觉很熟悉?没错!这和上面meshgrid()函数生成的两个数组的形式是一样的!要么所有行相同,要么所有列相同。所以meshgrid()函数可以用来生成需要坐标参与运算的二维数组。再看代码:
[X, Y] = meshgrid(0:2, 0:2);
% 结果如下:
X = [0, 1, 2; Y = [0, 0, 0;
0, 1, 2; 1, 1, 1;
0, 1, 2] 2, 2, 2]
不费吹灰之力就生成了两个与坐标有关的二维数组!