matlab的meshgrid函数详解

matlab的meshgrid函数详解函数形式[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这样的形式…

大家好,又见面了,我是你们的朋友全栈君。

函数形式

[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)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134136.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号