# how to plot streamline

27 views (last 30 days)
Ham Man on 14 Jul 2021
Edited: Ham Man on 19 Jul 2021
I have the 2-D PIV data like below and I am not able to get streamlines in matlab:
ix,iy,iz = image coordinate X,Y,Z [pixel]
dx = displacement component X [pixel] * (image resoltion) = mm
dy = displacement component Y [pixel] * (image resoltion) = mm
--------------------------------------------------
So I have dx and dy in mm. Also I can calculate: du = dx/dt , dv = dy/dt as the velocities in x and y directions.
I want to get the streamline usnig streamline/streamslice functions in matlab but I do not know how to define startx and starty?? Should I use meshgrid function for that? and shoul I use ix,iy(image coordinates) OR dx,dy to define startx and starty points?
Moreover do I need to define meshgrid for du,dv to fill velocities for every point??
Any help would be appreciated.
A = xlsread(......myfile.xls); % myfile.xls contains all data.
dx = A(1:end,4); % size(dx) = 8400*1
dy = A(1:end,5); % size(dy) = 8400*1
du = A(1:end,6); % size(du) = 8400*1
dv = A(1:end,7); % size(dv) = 8400*1
[startx,starty] = ?????
[X,Y] = meshgrid(dx,dy);
streamline(X,Y,du,dy,startx,starty);
Ham Man on 16 Jul 2021
The streamline/streamslice gave me an error stating that U,V should be 3D data. How can I make those in 3D?

KSSV on 14 Jul 2021
Edited: KSSV on 14 Jul 2021
Try:
skip = 2 ; % can be changed
startx = X(1:skip:end,1:skip:end) ;
starty = Y(1:skip:end,1:skip:end) ;
streamline(X,Y,du,dy,startx,starty);
Also have a look on streamslice. This would be a better function to use.
KSSV on 19 Jul 2021
T(8447,:) =[] ; % remove NaNs
x = T.(1) ; y = T.(2) ;
dx = T.(4) ; dy = T.(5) ;
[X,Y] = meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y))) ;
dX = griddata(x,y,dx,X,Y) ;
dY = griddata(x,y,dy,X,Y) ;
streamline(X,Y,dX,dY,X,Y)
And thanks is accepting/ voting the answer.
Ham Man on 19 Jul 2021
Edited: Ham Man on 19 Jul 2021
Perfect. Thanks again KSSV.