How to find volume under fitted data?
25 views (last 30 days)
Show older comments
Steven on 28 Sep 2017
Commented: Steven on 29 Sep 2017
I have a set of data, fitted by polynomial of 8th order. I want to find the volume under this surface (due to rotation around y axis for example). I am not sure how to do it. Should I use dblquad or trapz? Since dblquad needs function handle and I do not have the function, just the interpolated data (I also can not use interp2 (as suggested in some answers), because it uses linear interpolation. Any idea how I can find the volume?
Teja Muppirala on 28 Sep 2017
Edited: Teja Muppirala on 28 Sep 2017
If you have a function y = f(r), which it sounds like you do since you have a polynomial, then you can use integral.
y = @(r) 1-r; % y can be any arbitrary function of r. Put the function for your curve here (POLYVAL?).
a = 0; % Some limits of integration r = a to b
b = 1;
% Volume under surface of rotation:
vol = 2*pi*integral(@(r) y(r) .* r, a, b) % Put in the extra ".*r" for polar coords.
Here I used y = 1-r, so it is a cone, and I can verify that the answer I got (vol=1.047) was indeed equal to the analytical answer for the volume of a cone with unit height and radius (pi/3).
If you don't have a function, but just some discrete set of values r and y, then you can use INTERP1 along with INTEGRAL.
r = [ 0 0.2 0.4 0.6 0.8 1.0 ]; % Again, just use a unit cone for testing purposes
y = [ 1 0.8 0.6 0.4 0.2 0 ];
Yfun = @(p) interp1(r, y, p);
vol = 2*pi*integral(@(r) Yfun(r).*r, 0, 1) % Again, you'll get 1.0472
More Answers (0)
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!