Azzera filtri
Azzera filtri

Line Integral under surface

3 visualizzazioni (ultimi 30 giorni)
HAMID
HAMID il 16 Nov 2021
Risposto: Brahmadev il 10 Apr 2024
Here is what I am trying to do (I am relatively new to MatLab):
  • I have a surface defined from an excel sheet (data.csv). This is a screenshot of the surface:
  • Surface was generated from the following code (excel sheet is attached):
clear; clc;
% Read table:
T = readtable('data.csv');
% Plot surface:
x = T.(1)*180 ;
y = T.(2)*180 ;
z = T.(3) ;
xi = linspace(min(x),max(x));
yi = linspace(min(y),max(y));
[X,Y] = meshgrid(xi,yi);
Z = griddata(x,y,z,X,Y);
surf(X,Y,Z)
shading interp
colorbar
  • I have a straight segmant connecting two random points {P1, P2} on the XY plane (see figure above as an example).
  • How can I calculate the area between this segment and the surface?

Risposte (1)

Brahmadev
Brahmadev il 10 Apr 2024
Hi @HAMID,
You can find the area along any line for the surface given by using the "interp2" to interpolate th function along the specific points and then applying the basic definition for the area of a trapezium. The area of a trapezium is A = (a+b)*h/2 where a and b are the heights of the parallel sides and h is the distance between them. Please see example below:
clear; clc;
% Read table:
T = readtable('data.csv');
% Plot surface:
x = T.(1)*180 ;
y = T.(2)*180 ;
z = T.(3) ;
xi = linspace(min(x),max(x));
yi = linspace(min(y),max(y));
[X,Y] = meshgrid(xi,yi);
Z = griddata(x,y,z,X,Y);
surf(X,Y,Z)
shading interp
colorbar
% Assuming points P1 and P2 and interpolating Z values on the surface along
% the connecting line
x1 = xi(1); x2 = xi(100);
y1 = yi(1); y2 = yi(100);
t = linspace(0, 1, 100); % 100 points along the line
x_line = x1 + t * (x2 - x1);
y_line = y1 + t * (y2 - y1);
z_line = interp2(X, Y, Z, x_line, y_line);
hold on
plot3(x_line,y_line, z_line);
dx = sqrt((x_line(2)-x_line(1))^2+(y_line(2)-y_line(1))^2);
Area = 0;
for i = 1:length(z_line)-1
% Itreratively find area of trapezium
Area = Area + (z_line(i)+z_line(i+1)/2)*dx;
end
Hope this helps!

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by