|
"Ivo " <i.g.s.v.hooijdonk@student.tue.nl> wrote in message <i1er2u$io3$1@fred.mathworks.com>...
> I have a problem with plotting a 2D velocity field. I would like to have a plot that shows the velocity in the xy direction at various positions.
>
> The data I have is from a numerical simulation. I have a (virtual) watertank and in that tank are 950 probes that measure the 3 veclocity components, pressure and density (one of the velocity components is zero in an ideal situation).
> The output is like this:
> V_y V_z V_x pressure density (one files (i.e. one probe) measures on 500 timesteps so I get 500 rows of this format in one file, and that brings me to a total of 950 files with data in this format, but for this purpose I would like to make a plot of one timestep, so one row of each file)
>
> In a separate file are the locations of the probes and are in a format:
> y z x
> this file has 950 rows of this format (row 1 corresponds to file 1)
>
> I was able to make a plot of the velocities seperatly, but not together and not with arrows (I used contour)
>
> Here are the m-files I am using now (these are for all timesteps)
> This is for loading U (x-speed)
> ________________________________________
> U=13.*[sonda(:,3),sonda(:,2)];
> for i=50:99
> number=num2str(i);
> file=strcat('son0',number,'.out');
> stored=load( file );
> for j=1:500
> U((i-49),j+2)=stored(j,4);
> end
> end
> for i=100:999
> number=num2str(i);
> file=strcat('son',number,'.out');
> stored=load( file );
> for j=1:500
> U((i-49),j+2)=stored(j,4);
> end
> end
> ________________________________________
> This is for plotting U and saving the plots on my harddisk
> ________________________________________
> x=U(:,1);y=U(:,2);
> xmin=min(x); ymin=min(y);
> xmax=max(x); ymax=max(y);
>
> xres=200; yres=200;
>
> xv=linspace(xmin, xmax, xres); yv=linspace(ymin, ymax, yres);
>
> [Xinterp,Yinterp]=meshgrid(xv,yv);
> for i=1:500
> z=U(:,i+2);
> Zinterp=griddata(x,y,z,Xinterp,Yinterp);
> number=num2str(i);
> A=strcat('Perpendicular velocity(U in cm/s) on t=',number);
> h=1;
> contour(Xinterp,Yinterp,Zinterp,20); title(A);xlabel('Distance to the moving wall'); ylabel('Distance to the bottom');caxis([-0.6 0.6]);
> load('Mycolormaps','mycmap');
> set(1,'colormap',mycmap);
> colorbar('location','eastoutside');
> filename=['t',num2str(i+100),'.jpg'];
> saveas(h,filename,'jpeg');
> end
> ________________________________________
>
> Could someone please explain how to rearrange my data such that I can use quiver or an other plot function that would serve my purpose? Or if it turns out to be really easy, adjust my m-files so that I can use it? (Please don;t make it too complicated, because creating these m-files is about my level of understanding of matlab).
>
> Thank you in advance,
>
> Ivo
If my understanding of what you have is correct:
>>quiver(Xinterp(:),Yinterp(:),U(:,1),U(:,2)); %The colon operator turns the matrix into a vector taking pieces column-wise.
%Thus what I'm doing is making 4 column vectors: x-coords, y-coords, U-coords, V-coords and quiver() will draw an arrow for each row of the 4.
|