Integrate pressure over area, from dataset points

6 Ansichten (letzte 30 Tage)
Francesco Brescia
Francesco Brescia am 30 Okt. 2023
Hi, i want to compute the integral over the area of the pressure distribution p(x,y). I have vectors x and y ,say each one of size n by 1,containing the coordinates at which the pressure is known, and a vector of pressures, size n by 1, with the pressure at each coordinate. I thought i could use trapz 2 times to compute the integral first in one direction and then the other, but to do this i would need a Matrix of pressure, instead i have a vector of the same size of the coordinates x and y. I also know that the area I have is an anulus surface, as i can see from plotting using stem3(x,y,p). The coordinates are taken w.r.t the center of the anulus, in cartesian coordinates. Hope you can help me figure this out, thanks.
  5 Kommentare
Dyuman Joshi
Dyuman Joshi am 31 Okt. 2023
Why not just sum the discrete values of Pressure-force at each point?
Torsten
Torsten am 31 Okt. 2023
Bearbeitet: Torsten am 31 Okt. 2023
If your suggestion was used, the density of the measurement points had to mirror the areas associated with them. But imagine data accumulating in a certain area while in another, there are almost no measurements. In this case, the weights for the datapoints in the integration couldn't be equally chosen.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Torsten
Torsten am 30 Okt. 2023
Bearbeitet: Torsten am 30 Okt. 2023
Maybe you want to get mean pressure over the face. In this case, divide "sol" by area = pi*(5^2-1^2) as done below.
x = load("x.mat")
x = struct with fields:
x1: [1323×1 double]
y = load("y.mat")
y = struct with fields:
y1: [1323×1 double]
p = load("p.mat")
p = struct with fields:
p: [1323×1 double]
plot(x.x1,y.y1,'o')
F = scatteredInterpolant(x.x1,y.y1,p.p);
fun = @(r,theta)F(r.*cos(theta),r.*sin(theta)).*r;
sol = integral2(fun,1,5,0,2*pi)
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
sol = 37.9349
mean_sol = sol/(pi*(5^2-1^2))
mean_sol = 0.5031
  5 Kommentare
Torsten
Torsten am 1 Nov. 2023
Bearbeitet: Torsten am 1 Nov. 2023
Study the example
Multiple Numerical Integrations
under
to learn about the necessary format of your function data in order to use "trapz" for a 2d integration.
If you have problems to make your data compatible with the required format for "trapz", use the "scatteredInterpolant" approach - the setup is easy and the results won't differ significantly in my opinion.
Francesco Brescia
Francesco Brescia am 2 Nov. 2023
Thank you very much for the help Torsten, I'll have a better look at trapz.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by