Liebe Genies, ich habe folgendes Problem: ich habe 50x50 Gitterpunkte, die immer den selben Abstand zueinander haben(nämlich 100m), und von denen jeder einen gewissen Höhenwert hat - also eine Topographie, und zwar in Form eines Tales. Nun möchte ich das genaue Volumen des Gesteins wissen. Dazu habe ich immer 4 Höhenwerte gemittelt (Matrix C), habe also sozusagen lauter Quader.
Jetzt möchte ich übereinander liegende Schichten machen, und zwar jeweils 100m dicke, und aus diesen Schichten das Luftvolumen bestimmen. Dazu soll das Programm einfach das Gesammtvolumen ( V= 5000*5000*100) minus der Summe der Einzelvolumen der Quader in dieser Schicht berechnen, das was nach Abzug des Gesteins übrig bleibt ist die in diesem Segment befindliche Luft.
Kurz gesagt möchte ich, dass das Program folgendes macht:
--> Volumsformel: V= a*b*h
--> falls h kleiner als Schichthöhe dann soll das h aus der Matrix C genommen werden, falls h größer gleich der Schichthöhe soll für h die Schichthöhe eingesetzt werden. Am Ende sollen alle diese kleinen Volumen jeder Schicht addiert werden, und vom Gesammtvolumen abgezogen werden; was übrig bleibt ist das Volumen der Luft.
Bsp.:
Schicht 1: h_Quader1= 117m --> Schichthöhe ist 100m --> also V=100*100*100
Schicht 2: h_Quader1= 117m --> muss in dieser Schicht also für h 17m einsetzen
Schicht 3: Volumen von Quader 1 in dieser Schicht ist 0.
Code:
[X,Y] = meshgrid(-2500:100:2500, -2500:100:2500);
h=-2000:2000/25:2000;
q=-1:1/25:1;
for i=1:length(X)
Z(i,:)=q.^2.*abs(h);
end
surf(X,Y,Z) [a,b]=size(Z);
for a=1:b-1 for j=1:n-1
C(i,j)=(Z(i,j)+Z(i,j+1)+Z(i+1,j)+Z(i+1,j+1))/4;
end end
äh, wenn du minimal 100m Blockkantenlänge hast, wie willst du dann was mit 17m umsetzen? 117=100 würde ich bei Schritt 2 sagen...
Beim zeiten Anstrich (-->) willst du das irgendwie feiner rastern - und zwar nur in der Höhe - bringt das überhaupt was?
--> Mach doch erstmal deine Berechnungen für glatte 100m und dann sehen wir weiter.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Quacksi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 27.04.2012, 21:13
Titel:
Stell dir vor, du hast ein Aquarium, und in diesem Aquarium stehen Legosteine. Du kennst das Volumen des Aquariums (also Seitenlängen und Höhe) genau wie von den Legosteinen.
Jetzt möchtest du wissen wie viel Wasser in dem Aquarium ist - dafür musst du die ganzen kleinen Volumina der Legos vom Gesamtvolumen des Aquariums abziehen!
Und weil du lustig bist, willst du nicht einfach das Volumen des Wassers im ganzen Aquarium auf einmal, sondern fragst dich wie viel Wasser ist in den unteren 10cm, den 10cm darüber, usw usw
--> du zerlegst dein Aquarium also in Schichten, oder genauer: Du nimmst nicht die ganze Höhe, sondern stellst dir vor du legst jeweils 10cm dicke Schichten ins Aquarium!
In dem ich mein Aquarium in 10cm-Blöcke teile. Mir ist es dann aber auch egal, ob 1m-Blöcke für was anders besser wären...
(ich wollte nicht sagen, dass dein grundlegender Ansatz falsch wäre, aber mEn deine Vorstellungen von dem, was rauskommen kann...)
Also, brauche ich 10cm, nehm ich 10cm. Brauche ich 100m, nehme ich 100m.
Äquivalent zum Aquarium: 11cm=10cm.
Du kannst aber genauso auch 100x100x1[LE] rastern, ganz wie du magst...
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Quacksi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.04.2012, 00:31
Titel:
Hey andi,
erst mal danke dass du dir das überhaupt angeschaut hast!
Mein Problem ist nicht die Theorie hinter dem ganzen - ich kenne ja die Abstände der einzelnen Gitterpunkte zueinander, die Höhenwerte,... - ich weiß einfach nicht wie ich das oben beschriebene am besten in einer Schleife realisiere
Ich hänge da schon länger dran, und ich weiß, das ist bestimmt watscheneinfach, aber ich schaff es nicht diese Theorie in einen für Matlab verständlichen Code zu packen um meine Ergebnisse zu kriegen
1.) So einfach ist das nicht.
2.) dein Ansatz sieht schon gut aus, aber ich glaube du erhoffst dir zu viel davon.
3.) Versuch es mal irgendwie mathematisch zu beschreiben.
4.) Wie gesagt eben erstmal in 100m Blöcken. Und eine 110m Schicht wird dann eben 1 hoch - also 100m. Damit musst du erstmal leben, bis es läuft.
5.) Nicht verzweifeln, bei dem tollen Wetter rausgehen - mit Block und Stift am See sitzen wird sicher mehr bringen als am PC zu grübeln!
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.