如何在MATLAB网格上评估向量值函数(或创建向量场)?

时间:2017-10-29 22:35:30

标签: matlab

我的3D网格设置如下:[X,Y,Z] = ndgrid(0:2^(-8):1)。我想评估并执行在MATLAB meshgrid / ndgrid中每个点定义的向量字段的操作。换句话说,我想为网格中的每个点分配三维向量,并使用这些向量执行逐点运算。

vec = [X.^2 ; 2*Y]之类的实现最终会连接矩阵,这使得很难执行点和交叉产品等操作。

有没有办法可以在网格中的每个点定义一个矢量值函数,该点作为输入,该点的坐标(文档只讨论网格上的评估标量函数)?或者也许在MATLAB中有一个更简单的实现?

老实说,任何可以让我避免在2 ^ 24点屈服的事情都会受到赞赏。

谢谢!

修改 我目前使用符号替换的实现如下:

n=256;
[X,Y,Z] = ndgrid(0:1/n:1); % declaring 3D grid.
syms x y z; % declaring position variables.
xx = [x,y,z];
r1 = norm(xx-c1); % scalar field over grid.
n1 = (xx-c1)/r1; % vector field over grid.
v1 = cross(s1,n1); % vector field over grid.
w1 = n1'*v1; % tensor field over grid.
a = dot(v1,w1); % scalar field over grid.

% subbing in the value of scalar field 'a' (symbolic) into 3D array of doubles, A.
A = zeros(n+1,n+1,n+1);
for c = 1:n+1 % X
    for d=1:n+1 % Y
        for e= 1:n+1 % Z
            A(c,d,e) = subs(a,[x,y,z],[X(c,0,0),Y(0,d,0),Z(0,0,e)]);
        end
    end
end
% use A in future computations.

0 个答案:

没有答案