Go Back   MacRumors Forums > Apple Systems and Services > Programming > Mac Programming

Reply
 
Thread Tools Search this Thread Display Modes
Old Oct 30, 2010, 05:05 PM   #1
dukebound85
macrumors P6
 
dukebound85's Avatar
 
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
dukebound85 is offline   0 Reply With Quote
Old Oct 30, 2010, 05: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] ?
SidBala is offline   0 Reply With Quote
Old Oct 30, 2010, 06:28 PM   #3
dukebound85
Thread Starter
macrumors P6
 
dukebound85's Avatar
 
Join Date: Jul 2005
Location: 5045 feet above sea level
Quote:
Originally Posted by SidBala View Post
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
http://upload.wikimedia.org/wikipedi..._mass_plot.png
dukebound85 is offline   0 Reply With Quote
Old Oct 31, 2010, 09: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."
Berlepsch is offline   0 Reply With Quote
Old Oct 31, 2010, 02: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
crackpip is offline   0 Reply With Quote

Reply
MacRumors Forums > Apple Systems and Services > Programming > Mac Programming

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Similar Threads
thread Thread Starter Forum Replies Last Post
Global function -> normal function? DennisBlah iPhone/iPad Programming 6 Feb 28, 2014 02:40 AM
Matlab 2013: What can it be used for? MacNoobGuy Mac Basics and Help 3 Sep 24, 2013 01:15 PM
Matlab help rokusho1 Mac Basics and Help 2 Nov 8, 2012 07:19 PM
Plotting the switch, but when? chaseychasem MacBook Pro 13 Aug 27, 2012 04:49 PM
Plotting Multiple Points In New Maps App? newyorksole iOS 6 7 Aug 13, 2012 01:12 PM

Forum Jump

All times are GMT -5. The time now is 10:59 AM.

Mac Rumors | Mac | iPhone | iPhone Game Reviews | iPhone Apps

Mobile Version | Fixed | Fluid | Fluid HD
Copyright 2002-2013, MacRumors.com, LLC