Compute Gradient of a Scalar 3-D Field Defined On a non Uniform Grid

8 Ansichten (letzte 30 Tage)
Alessandro
Alessandro am 31 Mär. 2017
Kommentiert: darova am 26 Mär. 2021
I have the values of a scalar Field in 3 dimensions over a randomly arranged set of points in space. How do I calculate the components of the gradient of such function at the same point locations?

Antworten (2)

Ramesh Rajesh
Ramesh Rajesh am 25 Mär. 2021
Did you manage to figure out ? I have same question.

darova
darova am 25 Mär. 2021
What about griddata?
% assume x,y,z are your random coordinates
% assume u,v,w are your vectors (gradients)
% assume that you can interpolate Z variable
xx = linspace(min(x(:)),max(x(:)),20);
yy = linspace(min(y(:)),max(y(:)),20);
[x1,y1] = meshgrid(xx,yy); % create regular mesh
z1 = griddata(x,y,z,x1,y1); % interpolate Z coordinate
u1 = griddata(x,y,u,x1,y1); % interpolate gradient U
v1 = griddata(x,y,v,x1,y1); % interpolate gradient V
w1 = griddata(x,y,w,x1,y1); % interpolate gradient W
  2 Kommentare
Ramesh Rajesh
Ramesh Rajesh am 26 Mär. 2021
Thanks for your code. I have data of coordinates in X,Y,Z with a scalar value. The locations of X,Y,Z are random. How do I find gradients (u,v,w) of the random coordinates?
darova
darova am 26 Mär. 2021
Find then use surfnorm
h = surf(x1,y1,z1);
[u,v,w] = surfnorm(h);

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by