Integrate pressure over area, from dataset points

5 vues (au cours des 30 derniers jours)
Francesco Brescia
Francesco Brescia le 30 Oct 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 commentaires
Dyuman Joshi
Dyuman Joshi le 31 Oct 2023
Why not just sum the discrete values of Pressure-force at each point?
Torsten
Torsten le 31 Oct 2023
Modifié(e) : Torsten le 31 Oct 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.

Connectez-vous pour commenter.

Réponse acceptée

Torsten
Torsten le 30 Oct 2023
Modifié(e) : Torsten le 30 Oct 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 commentaires
Torsten
Torsten le 1 Nov 2023
Modifié(e) : Torsten le 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 le 2 Nov 2023
Thank you very much for the help Torsten, I'll have a better look at trapz.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by