From: Ivo on 12 Jul 2010 06:34 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
From: Sean on 12 Jul 2010 08:46 "Ivo " <i.g.s.v.hooijdonk(a)student.tue.nl> wrote in message <i1er2u$io3$1(a)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.
From: Ivo on 12 Jul 2010 09:20 "Sean " <sean.dewolski(a)nospamplease.umit.maine.edu> wrote in message <i1f2qc$4t5$1(a)fred.mathworks.com>... > "Ivo " <i.g.s.v.hooijdonk(a)student.tue.nl> wrote in message <i1er2u$io3$1(a)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. Thank you. i don't really understand why I didn't get it right before. I have been spending quitte some time on solving this. But now it works.
|
Pages: 1 Prev: 2D Heat Conduction solving system of equations Next: gradients |