gradient with irregular grid
16 次查看(过去 30 天)
显示 更早的评论
I have as a variable the temperature at a given depth and longitude, so it is a vector (317,1) where the 317 are all latitudes.
How do I get the gradient of this variable (which I call T) knowing that the latitude grid is irregular?
I can try
gradient_T=gradient(T,e1v) where e1v is the irregular vector?
0 个评论
采纳的回答
Star Strider
2023-5-2
The gradient function assumes a fixed step size for the second argument.
The way I calculate the numerical derivative using an irregular grid for the reference (assuming vectors here) is:
gradient_T = gradient(T) ./ gradient(e1v);
That will essentially calculate
and generally produces the result I want.
.
4 个评论
Joshua Port
2025-9-10
编辑:Joshua Port
2025-9-10
I should have realized what this was getting at. If your data looks like this:
x_1d = linspace(0, 100)';
x = repmat(x_1d, 1, 100);
And you do:
gradient(x)
You'll get 0 everywhere. To compute df/dx you would need to do:
[~, dx] = gradient(x);
dfdx = gradient(f) ./ dx;
This method doesn't work when one of your dimensions is curvy, though. I wish gradient could take in an array of points, even scattered ones, and a function defined at those points, and compute the gradient. I have a method for dealing with this, but it requires a lot of headache.
Star Strider
2025-9-10
Of course, the derivative of a constant is zero. Beyond that, I am not following your use of the gradient function.
Stopping here.
更多回答(1 个)
Nathan Hardenberg
2023-5-2
You can give the positions of the corresponding values as the second function argument. In your case the lattitude for each temperature measurement.
temperature = [30 29 28 27 26 25 24 23];
latitude = [1 2 3 4 5 10 11 20];
T = gradient(temperature, latitude)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


