Lets say I have channel of length x = 200 and height y = 200. I have my velocity (u and v) distributed throughout the channel of size 200X200 for u and v each. How can I plot streamlines for this ? I have gone through the matlab documentation and am not clear about 'startx' and 'starty'. How should I define this ?

 采纳的回答

One way is to define a bunch of random seed locations within the domain like this:
N = 75; % number of seed locations
xstart = max(x)*rand(N,1);
ystart = max(y)*rand(N,1);
For example, try this:
x = 1:200;
y = 1:200;
[X,Y] = meshgrid(x,y);
vx = 30 + 30*cos((Y-100)*pi/100);
vy = 5*cos(X/10).*cos((Y-100)*pi/100);
figure
pcolor(X,Y,hypot(vx,vy))
shading interp
N = 75;
xstart = max(x)*rand(N,1);
ystart = max(y)*rand(N,1);
h=streamline(X,Y,vx,vy,xstart,ystart);
set(h,'color','red')

3 个评论

I'm not sure what your application is, but you may alternatively consider quiver. Just downsample the field, perhaps with imresize like this:
x = 1:200;
y = 1:200;
[X,Y] = meshgrid(x,y);
vx = 30 + 30*cos((Y-100)*pi/100);
vy = 15*cos(X/10).*cos((Y-100)*pi/100);
figure
pcolor(X,Y,hypot(vx,vy))
shading interp
sc = 1/10;
hold on
quiver(imresize(X,sc),imresize(Y,sc),imresize(vx,sc),imresize(vy,sc),'r')
Above I used sc = 1/10 to downsample by a factor of 10.
I have a situation like, I have U and V values of velocity for 1023 frames. Now I need to load it and find a proper streamline plot for all frames at any desirable point.
Hi Raja, did you find a solution to your problem? I have similar challenge but I want to plot the streamlines for just one frame.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Vector Fields 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by