Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

dukebound85

macrumors Core
Original poster
Jul 17, 2005
19,218
4,342
5045 feet above sea level
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:)
 
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] ?
 
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
??? 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
http://upload.wikimedia.org/wikiped...le_mass_plot.png/650px-Particle_mass_plot.png
 
I never used Matlab, but from the error description

??? 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);
 
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
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.