How to calculate the volume of a 3D plot defined by a matrix
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Wissem-Eddine KHATLA
le 16 Déc 2021
Commenté : Wissem-Eddine KHATLA
le 16 Déc 2021
Hi everyone,
So basically, I am trying to calculate a volume. More precisely, I have a height field that is defined in every point of a 2D plane and nammed "h_real" in my code. This quantity is a 3D matrix because each height field is computed at every timestamp so for each time frame corresponds a given height field.
I would like to estimate the evolution of the volume associated to the height's progression during the considered time period (which is the length of the 3D matrix). I have tried this script but the result obtained is not accurate...
Could someone help me to find a new strategy to do so please ?
Thank you in advance
for i = 1:length(h_real)
volume(i) = sum(h_real(:,:,i),'all')*(scale^2)*(1e6);
plot(volume)
ylabel('Volume (ml)')
xlabel('Number of images')
title('Evolution du volume au cours du temps');
end
0 commentaires
Réponse acceptée
Matt J
le 16 Déc 2021
Modifié(e) : Matt J
le 16 Déc 2021
It looks fine, though I would do it this way:
volume=reshape( sum(h_real,[1,2]), 1,[])*(scale^2)*(1e6);
plot(volume)
ylabel('Volume (ml)')
xlabel('Number of images')
title('Evolution du volume au cours du temps');
3 commentaires
Matt J
le 16 Déc 2021
Modifié(e) : Matt J
le 16 Déc 2021
So you think that if this method doesn't give me a relevant result it's because there is something wrong with my initial data "h_real" ?
Yes.
Don't you think that using the "sum" function is a little bit wrong in a certain way ?
Not if your data is smooth. You might be able to do a bit better with trapz().
volume=reshape( trapz(trapz(h_real,1),2), 1,[])*(scale^2)*(1e6);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Image Preview and Device Configuration 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!