Compute Gradient of a Scalar 3-D Field Defined On a non Uniform Grid
6 views (last 30 days)
Show older comments
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?
0 Comments
Answers (2)
darova
on 25 Mar 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 Comments
Ramesh Rajesh
on 26 Mar 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
on 26 Mar 2021
Find
then use surfnorm
h = surf(x1,y1,z1);
[u,v,w] = surfnorm(h);
See Also
Categories
Find more on Interpolation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!