2016-04-07 6 views
-1

Ich würde gerne wissen, wie man Tropfenbewegungen in einem mikrofluidischen Gerät mit Matlab simuliert.Simulation der Bewegung von Tropfen in einem mikrofluidischen Gerät mit Matlab

Ich werde versuchen, es so weit wie möglich einzugrenzen, Es ist eine Situation, in der ein Wassertropfen in einem Strom von Öl bewegt wird, Es ist ein potenzieller Fluss (Inviscid, Incompressible und Irrotational), auf der Basis von this paper Ich habe es geschafft, zu ihrer Gleichung (1) (Seite 3) für $ \ dot {x} $ und $ \ dot {y} $ zu gelangen und möchte die Bewegung der Tröpfchen in Matlab in einer Art Filmformat anzeigen:

Ich habe nur grundlegende Kenntnisse in der Fluiddynamik, und ich habe Matlab nie mehr als nur die Implementierung von mathematischen Methoden verwendet, also würde ich jede Art von Hilfe zu schätzen wissen, wenn weitere Details über das Problem benötigt werden, um mir zu verstehen, was zu tun ist Bitte lassen Sie mich wissen

Ich postete in der physics.stackexchange Website, und ich wurde geraten, es hier zu posten, weil es sich auf die Programmierung bezieht.

+0

Was ist Ihr Problem? Welcher Teil Ihres Matlab-Codes funktioniert nicht? Sie können [diesen Link] (http://ch.mathworks.com/help/matlab/ref/movie.html) aufrufen, um ein Video zu erstellen. Aber wenn Sie nicht einmal wissen, was Sie programmieren müssen, wird es schwierig für uns, Ihnen zu helfen. – obchardon

+0

@obchardon Danke für den Link! Ich wusste von solch einer Funktion nichts, also war das meine Frage. (Ich nahm an, dass ich explizit einen Code schreiben musste, um einen Frame-für-Frame-Film in Matlab zu implementieren). aber jetzt, da ich von einer solchen Funktion weiß, habe ich noch einen Zweifel ... sagen wir, ich verfolge die Bewegung eines Objekts zu verschiedenen Zeiten, ist es möglich, die Position des Objekts an jedem 't' als Rahmen und zu nehmen benutze es im Film (M)? – aswa09

+0

natürlich: (zum Beispiel ein Punkt in 3d) wenn Sie eine Position haben (dh 'pos (1) = [1 2 3]') im Raum bei t1 und eine andere Position ('pos (2) = [2 3 5 ] ') bei t2. Sie können eine for-Schleife erstellen (für i = 1: Länge (pos)) und Ihre Position "plot (pos (i))" grafisch darstellen und den Rahmen mit "F (i) = getframe;" Der Prozess ist ähnlich für eine Kugel oder einen Kreis. – obchardon

Antwort

0

Um den ersten Teil der Frage zu beantworten, wie die Tröpfchenbewegung zeigen:

Wenn Beispiel können Sie tun:

X = rand(10,1)*10; 
Y = rand(10,1)*10; 
figure 

for i = 1:length(X) 
    plot(X(i),Y(i),'o') 
    xlim([0,10]) %fix the x and y limit 
    ylim([0,10]) %fix the x and y limit 
    F(i) = getframe; 
    drawnow 
end 

movie(F) 

Wir haben das x-Limit und y-Limit sonst zu beheben Ihr Punkt erscheint immer in der Mitte des Bildschirms.

Wenn Sie das Video speichern möchten (.avi zum Beispiel):

X = rand(10,1)*10; 
Y = rand(10,1)*10; 

v = VideoWriter('test.avi'); %create a video in your current folder 
open(v) 

figure 

for i = 1:length(X) 
    plot(X(i),Y(i),'o') 
    xlim([0,10]) 
    ylim([0,10]) 
    F(i) = getframe; 
    writeVideo(v,F(i)) 
end 

close(v) 

Und nur zum Spaß in 3D:

X = 1:100; 
Y = 1:100; 
Z = 1:100; 

v = VideoWriter('test2.avi'); 
open(v) 

[x,y,z] = sphere; 

figure 

for i = 1:length(X) 
    surf(x+0.1*X(i),y+0.1*Y(i),z+0.1*Z(i)); 
    xlim([0,10]) 
    ylim([0,10]) 
    zlim([0,10]) 
    view(30,30) 
    F(i) = getframe; 
    writeVideo(v,F(i)) 
end 



close(v) 

Aber diese Methode verlassen wird langsam, da Matlab haben zu machen jeder Rahmen.

+0

Ich füge eine Option hinzu, um das Video zu speichern – obchardon

+0

Was ist, wenn Sie die Zeit zwischen jedem Frame verzögern möchten? Kann das als Argument für die Funktion angegeben werden? – aswa09

+0

Sie können 2 mal (oder 3 oder 4 Mal ...) jeden Frame schreiben ... nicht wirklich rein, aber es wird funktionieren – obchardon