WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

4D Volume Daten in Loop Updaten Isocaps

 

physik_BTU
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2013, 18:48     Titel: 4D Volume Daten in Loop Updaten Isocaps
  Antworten mit Zitat      
Hallo ich habe erst vor ca. einer Woche angefangen mich mit Matlab zu beschäftigen.

Die hier ist der Code zur Berechnung des Brusselators in 3D (Standardmodell der Stukturbildung)

meine Frage ist jetzt gibt es eine bessere Möglichkeit in der While Loop die Isocaps zu Updaten.

Denn ich habe das Gefühl, dass er die neuen Werte einfach über die alten drüber zeichnet, wenn man während der Berechnung mal das figure Fenster schließt,dann öffnet sich logischer weise ein neues aber die oberfläche des Würfels sieht anders aus und innerhlab eines Zeitschrittes sollte sich noch nicht so viel getan haben.


Code:
%Parameter deklaration
IDIM = 50;
JDIM = 50;
KDIM = 50;

%Zeit Schrittweiten
T = 0.0;
TEND=10;
DX=50/(IDIM-1);
DX2=DX^2;
DT=0.1*DX2;
D=0.5;

x=[1: DX :IDIM];
y=[1: DX :JDIM];
z=[1: DX :KDIM];

a = 2
b=5.1
n10 = a
n20 = b/a

%3DIM Array
n1 = zeros(IDIM,JDIM,KDIM);
n2 = zeros(IDIM,JDIM,KDIM);
n1P = zeros(IDIM,JDIM,KDIM);
n2P = zeros(IDIM,JDIM,KDIM);

%Zufällige Anfangswerte (0.9 - 1.1)*n10
for i=1:IDIM,
    for j=1:JDIM,
        for k=1:KDIM,
            n1(i,j,k) = n10*(0.9+0.2*rand(1));
            n2(i,j,k) = n20*(0.9+0.2*rand(1));
        end;
    end;
end;

figure;
colormap bone;
[X,Y,Z] = meshgrid(x,y,z);
p1=patch(isocaps(n1,0),'FaceColor','interp','EdgeColor','none');
view(45,35);
axis vis3d tight;
colorbar;
S=1;

%Zeitschritte werden Berechnet
while(T < TEND)
     T = T + DT
%Periodische Randbedingungen
    for k=1:KDIM,
        for j=1:JDIM,
         n1(IDIM,j,k)=n1(2,j,k);
         n1(1,j,k)=n1(IDIM-1,j,k);
         n2(IDIM,j,k)=n2(2,j,k);
         n2(1,j,k)=n2(IDIM-1,j,k);
        end;
    end;
   
     for k=1:KDIM,
        for i=1:IDIM,
         n1(i,JDIM,k)=n1(i,2,k);
         n1(i,1,k)=n1(i,JDIM-1,k);
         n2(i,JDIM,k)=n2(i,2,k);
         n2(i,1,k)=n2(i,JDIM,k);
        end;
    end;
   
     for j=1:JDIM,
        for i=1:IDIM,
         n1(i,j,KDIM)=n1(i,j,2);
         n1(i,j,1)=n1(i,j,KDIM-1);
         n2(i,j,KDIM)=n2(i,j,2);
         n2(i,j,1)=n2(i,j,KDIM-1);
        end;
    end;

% Finite Differenzen Verfahren  
 
    for k=2:KDIM-1,
        for j=2:JDIM-1,
            for i=2:IDIM-1,
                 n1P(i,j,k)=(a-(1+b)*n1(i,j,k)+((n1(i,j,k)^2)*n2(i,j,k))...
                     +(D/DX2)*(n1(i-1,j,k)+n1(i+1,j,k)+n1(i,j-1,k)...
                     +n1(i,j+1,k)+n1(i,j,k+1)+n1(i,j,k-1)-6*n1(i,j,k)))*DT;
                 
                 n2P(i,j,k)=(b*n1(i,j,k)-((n1(i,j,k)^2)*n2(i,j,k))...
                     +(1/DX2)*(n2(i-1,j,k)+n2(i+1,j,k)+n2(i,j-1,k)...
                     +n2(i,j+1,k)+n2(i,j,k+1)+n2(i,j,k-1)-6*n2(i,j,k)))*DT;
            end;
        end;
    end;
 % nächster Zeitschritt wird berechnet  
     for k=2:KDIM-1,
        for j=2:JDIM-1,
            for i=2:IDIM-1,
                 n1(i,j,k)= n1(i,j,k)+ n1P(i,j,k);
                 n2(i,j,k)= n2(i,j,k)+ n2P(i,j,k);
            end;
        end;
    end;

colormap bone;
p1=patch(isocaps(n1,-4),'FaceColor','interp','EdgeColor','none');
view(45,35);
refreshdata;
drawnow;
F(S)=getframe;
S=S+1;
end;
movie(F,10,10);


Ich habe es schon mit dem Set Befehl versucht also
set(p1,'XData',X,'YData',Y,'ZData',Z );

doch dann kommt immer der Fehler

"Warning: Color Data is not set for Interpolated shading "

Habe schon auf Gefühlt 1000 Seiten im Netz nach Plot in Loop gesucht aber nix zu meinem Problem gefunden

Danke für Eure Hilfe!!!
Private Nachricht senden Benutzer-Profile anzeigen


physik_BTU
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2013, 02:03     Titel:
  Antworten mit Zitat      
lool hab grad hier im forum nochmals geschaut und den Befehl clf; gefunden. Ich glaub der machts für mich Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.