gradient with irregular grid

조회 수: 15 (최근 30일)
Alessio Colella
Alessio Colella 2023년 5월 2일
댓글: Star Strider 2025년 9월 10일
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?

채택된 답변

Star Strider
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
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
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
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)
T = 1×8
-1.0000 -1.0000 -1.0000 -1.0000 -0.3333 -0.3333 -0.2000 -0.1111

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by