使用matlab模拟微流体装置中液滴的运动
simulating the movement of droplet in a microfluidic device using matlab
我想知道如何使用 matlab 模拟微流体装置中的液滴运动。
我会尽可能地缩小它的范围,这是一种水滴在油流中移动的情况,它是一种势流(无粘性,不可压缩和无旋),基于this paper 我已经设法得出 $\dot{x}$ 和 $\dot{y}$ 的等式 (1)(第 3 页),我希望在 matlab 中展示一些液滴的运动一种电影格式
我只有流体动力学的基础知识,而且除了实现数学方法之外,我从未使用过 matlab,所以如果需要有关问题的更多详细信息以帮助我理解什么,我将不胜感激任何帮助要做什么,请告诉我
我在 physics.stackexchange 网站上 post 编辑,有人建议我在这里 post 因为它与编程有关。
回答问题的第一部分,如何显示液滴运动:
如果你可以这样做:
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)
我们必须修复 x 限制和 y 限制,否则你的点将始终出现在屏幕中间。
如果要保存视频(例如.avi):
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)
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)
但是这种方法退出很慢,因为 matlab 必须渲染每一帧。
我想知道如何使用 matlab 模拟微流体装置中的液滴运动。
我会尽可能地缩小它的范围,这是一种水滴在油流中移动的情况,它是一种势流(无粘性,不可压缩和无旋),基于this paper 我已经设法得出 $\dot{x}$ 和 $\dot{y}$ 的等式 (1)(第 3 页),我希望在 matlab 中展示一些液滴的运动一种电影格式
我只有流体动力学的基础知识,而且除了实现数学方法之外,我从未使用过 matlab,所以如果需要有关问题的更多详细信息以帮助我理解什么,我将不胜感激任何帮助要做什么,请告诉我
我在 physics.stackexchange 网站上 post 编辑,有人建议我在这里 post 因为它与编程有关。
回答问题的第一部分,如何显示液滴运动:
如果你可以这样做:
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)
我们必须修复 x 限制和 y 限制,否则你的点将始终出现在屏幕中间。
如果要保存视频(例如.avi):
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)
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)
但是这种方法退出很慢,因为 matlab 必须渲染每一帧。