MATLAB Answers

Area in 3-D temperature plot

조회 수: 5(최근 30일)
Tyler Menz
Tyler Menz 20 May 2020
댓글: Star Strider 21 May 2020
I have a set of oceanographic data with longitude, depth, and temperature. I've used contour3 to make a 3-D image of the data. Now I would like to find the area within the 6-8 deg C temperature range. Is there any way to do this withing Matlab? This is the code I've been using. Thank you!
load 'upcast';
lat = upcast(:,2);
long = upcast(:,3);
depth = upcast(:,4);
temp= upcast(:,5)
x = (upcast(:,3)); %long
y = (upcast(:,4)); %depth
z = (upcast(:,5)); %temp
xv = linspace(min(x),max(x));
yv = linspace(min(y),max(y));
[X,Y] = meshgrid(xv,yv);
Z = griddata(x,y,z,X,Y);
hold on
axis ij;
ylim ([0 100]);
colormap 'jet'
grid off

  댓글 수: 0

Sign in to comment.

채택된 답변

Star Strider
Star Strider 20 May 2020
Apparently, the contour3 call plots temperature contours as a function of longitude and depth. You can specify the levels at which you want the contours to be drawn: Contours at Specific Levels with Labels and also do that in a separate contour call if necessary to get only those specific levels.
The first output ‘M’ is the contour (x,y) coordinates (that here would be longitude and depth, see: M for details) that you can then use with trapz to get the areas.

  댓글 수: 6

표시 이전 댓글 수: 3
Star Strider
Star Strider 20 May 2020
If the contours are continuous (so that there is only one contour for each termperature), this will likely work:
M = contour(X,Y,Z,[6 8]);
T6I = find(M(1,:) == 6); % 6° Start Index
T6L = M(2,T6I); % 6° Column Length
T8I = find(M(1,:) == 8); % 8° Start Index
T8L = M(2,T8I); % 8° Column Length
T6idxrng = T6I+1:T6I+1+T6L;
T6x = M(1,T6idxrng);
T6y = M(2,T6idxrng);
T8idxrng = T8I+1:T8I+1+T8L;
T8x = M(1,T8idxrng);
T8y = M(2,T8idxrng);
Then use trapz as:
T6Area = trapz(T6x, T6y);
T8Area = trapz(T8x, T8y);
and go from there with whatever other processing you want to do with them.
Tyler Menz
Tyler Menz 21 May 2020
Seems to be working! Thank you so much!
Star Strider
Star Strider 21 May 2020
As always, my pleasure!

Sign in to comment.

추가 답변(0개)

Translated by