matlab的meshgrid函数详解
2018-02-11 22:10
495 查看
函数形式
[C,R] =meshgrid(c, r)初步解释
首先需要明确的是参数 c, r 都是行向量,该函数将行向量c, r指定的域变换为数组C,R,这2个数组能用来指示有2个变量的函数和三维的图。输出数组C的每一行都是行向量c,输出数组R的每一列都是行向量r。例如我们需要形成一个二维函数,其元素是由坐标变量x和y的值的平方和。也就是f(x,y) = x^2 +y^2这样的形式。其中变量x =0,1,2和y= 0,1。繁琐地来列出所有的坐标对:
(x,y) = (0,0) (0,1)
(1,0) (1,1)
(2,0) (2,1)
在matlab中我们所需要的就是这样的数据,然后将坐标对代入函数就可以得到结果了。
[C,R] = meshgrid([0,1],[0,1,2]) %%%%%%%%%结果%%%%%%%%% C = 0 1 0 1 0 1 R = 0 0 1 1 2 2 %%%%%%%%%%%% % f(1,1) = R(1,1).^2 +C(1,1).^2 f = R.^2 + C.^2
仔细观察上面的结果你会发现,R这个二维数组指明了x这个行标(分量),C这个二维数组指明了y这个列标(分量)。
加深理解
再举一个例子,主要是为了加深理解meshgrid函数,如实现 f(x,y) = A*sin(u0*x+v0*y),其中x =0,1,2,…,M-1;y=0,1,2,….,N-1.另外需要说明的是,M,N,A,u0,v0这些常数都是自己给定的。
首先给一个一般实现,但是速率很慢。
for r =1:M u0x = u0*(r-1) for c=1:N v0y =v0*(c-1) f(r,c) = A*sin(u0x+v0y) end end
用meshgrid函数实现,根据上面给出的条件,说明x =[0,1,..,M-1]而y=[0,1,…,N-1],这样一来我们也就确定了c,r这2个行向量。然后生成各自对应的行标、列标的二维数组C,R。
r = 1:M-1; c = 1: N-1; [C,R] =meshgrid(c,r); g = A*sin(u0*R +v0*C); g = mat2gray(g); imshow(g)
相关文章推荐
- 【matlab】函数meshgrid的用法详解(生成网格矩阵)和ndgrid的区别及用法
- matlab 的 colormap 函数详解
- matlab中cumsum函数和sum函数详解
- matlab里边的textread函数详解
- MatLab的meshgrid命令详解
- MATLAB view函数详解
- matlab 函数meshgrid的用法(生成网格矩阵)
- matlab 的 colormap 函数详解
- Matlab textread函数详解
- ndgrid 和 meshgrid 函数-Matlab
- Matlab中 pdist 函数详解(各种距离的生成)
- matlab函数定义详解
- Matlab中pdist 函数详解(各种距离的生成)
- Matlab textread函数详解
- Matlab-图像直方图函数imhist详解
- matlab 图像操作函数的详解
- MATLAB view函数详解
- Matlab注释函数legend详解
- Matlab中 pdist 函数详解(各种距离的生成)
- Matlab textread函数详解