MacRumors Forums Plotting a stream function in matlab

 Oct 30, 2010, 04:05 PM #1 dukebound85 macrumors P6     Join Date: Jul 2005 Location: 5045 feet above sea level Plotting a stream function in matlab How does one do this? I am trying to plot PSI = Acos(6x)-Uy where A=1 and U=1 over an x range of -2000-200 and y from -2000-2000 My code is this and it is giving me an error. x = -2000:1:2000; y = -2000:1:2000; si = zeros(x,y); for x = -2000:1:2000 for y = -2000:1:2000 si(x,y) = cos(6*x)-y; end end plot(si) Thanks for any help 0
 Oct 30, 2010, 04:55 PM #2 SidBala macrumors 6502a   Join Date: Jun 2010 What is the error? I am not sure what you are trying to do here. Are you trying to make a 3D graph of cos(6*x) - y over x = [-2000,2000] and y = [-2000,2000] ? 0
Oct 30, 2010, 05:28 PM   #3
dukebound85
macrumors P6

Join Date: Jul 2005
Location: 5045 feet above sea level
Quote:
 Originally Posted by SidBala What is the error? I am not sure what you are trying to do here. Are you trying to make a 3D graph of cos(6*x) - y over x = [-2000,2000] and y = [-2000,2000] ?
This is my error
Quote:
 ??? Attempted to access si(-2000,-2000); index must be a positive integer or logical. Error in ==> si5 at 6 si(x,y) = cos(6*x)-y;
Essentially, I want to plot the si function over many values of x's and y's that will result in somewhat parrallel plots so to speak.

Something that looks like this
0
Oct 31, 2010, 08:20 AM   #4
Berlepsch
macrumors 6502

Join Date: Oct 2007
I never used Matlab, but from the error description

Quote:
 ??? Attempted to access si(-2000,-2000); index must be a positive integer or logical. Error in ==> si5 at 6 si(x,y) = cos(6*x)-y;
it seems clear that the x,y in si(x,y) are indexes for a two-dimensional array and must be larger than zero. try the following:

for x = 0:1:4000
for y = 0:1:4000
si(x,y) = cos(6*(x-2000))-(y-2000);
__________________
"Everyone knows the inch is better than the centimeter, because it is bigger."
0
 Oct 31, 2010, 01:03 PM #5 crackpip macrumors regular   Join Date: Jul 2002 In MATLAB arrays always have a lower bound of 1. Your for loops have to be adjusted. Also I think contour() is more suitable instead of plot(). Then you can specify the x- and y-axis units. crackpip 0

 MacRumors Forums