What is MATLAB - BGUtools/MATLAB/matlabnew.pdf · Characteristics of MATLAB • Programming...
Transcript of What is MATLAB - BGUtools/MATLAB/matlabnew.pdf · Characteristics of MATLAB • Programming...
What is MATLAB?
• It stands for MATrix LABoratory
• It is developed by The Mathworks, Inc (http://www.mathworks.com)
• It is an interactive, integrated, environment
– for numerical computations
– for symbolic computations
– for scientific visualizations
• It is a high-level programming language
Characteristics of MATLAB
• Programming language based (principally) on matrices .
– Slow (compared with fortran or C) because it is an interpreted language ,i.e . not pre-compiled. Avoid for loops; instead use vector form whenever possible .
– Automatic memory management, i.e., you don't have to declare arrays in advance .
– Intuitive, easy to use .
– Shorter program development time than traditional programming languages such as Fortran and C .
– Can be converted into C code via MATLAB compiler for better efficiency .
• Many application-specific toolboxes available .
Start menu Matlab MATLAB
“>>” – שורת הפקוד ה
>> date
Getting Help
>> help date
>> helpwin date
helpwin gives you the same information as help, but in a different window.
Getting Help
>> doc date
>> lookfor date % search for keywords that best describe the function
>> Ctrl+C % stop Matlab from running
>> clc % clear screen
Special characters
• >> % default command prompt
• % % comment - MATLAB simply ignores anything to the
right of this sign (till the end of the line).
>> % my comment
• ; % semicolon at the end of the line will prevent MATLAB
from echoing the information you type on the screen.
>> a=20
>> B=20;
Creating Variables
• Matlab as a calculator:
• >>2+5
• >>7*10+8
• >>5^2
• ‘ans’ - "answer", used in MATLAB as the default variable.
Defining Your Own Variables
• When Matlab comes across a new variable name it
automatically creates it.
• Begins with a LETTER, e.g., A2z.
• Can be a mix of letters, digits, and underscores (e.g.,
vector_A, but not vector-A)
• Not longer than 31 characters.
• No spaces
• Different mixes of capital and small letters = different
variables.
For example: "A_VaRIAbLe", "a_variable", "A_VARIABLE",
and "A_variablE
• >> String='this is a string'
Listing & Clearing Variables
>> whos
>> clear %clear variables from memory
>> a=10
>> b = 20
>> the_average = (a + b ) / 2
Creating vectors
Column separator:
space/coma (,)
Creating sequences:
From : jump: till
Row separator:
Semicolon (;)
Creating Matrices
• Matrices must be rectangular.
•Creating random matrices:
2-by-4 random matrix
(2 rows and 4 columns).
Creating Matrices
• You can combine existing vectors as matrix elements:
• You can combine existing matrices as matrix elements:
Indexing Into a Matrix
>> mat_from_mat(8)
>> mat_from_mat(4,2)=0
>> mat_from_mat
• The row number is first, followed by the column number.
Linear Algebra Operations
Matrix Multiplication
• Inner dimensions must be equal
• Dimension of resulting matrix = outermost
dimensions of multiplied matrices
• Resulting elements = dot product of the rows of
the 1st matrix with the columns of the 2nd matrix
Type the following:
>>a=[2 3]
>>b=[3 2]
>>a*b
>>a.*b
>>a.*b'
>>a*b'
Vector Multiplication
Example: Solving Equations
• Solve this set of simultaneous equations
Array Operations
Boolean Operators & Indexing
String Arrays
• Created using single quote delimiter (')
• Each character is a separate matrix element (16 bits of
memory per character)
• Indexing same as for numeric arrays
String Array Concatenation
Working with String Arrays
Line Plots in Two Dimensions
• Plot (x,y)
• makes a two-dimensional line plot for each point in X and its
corresponding point in Y: (X(1),Y(1)), (X(2),Y(2)), (X(3),Y(3)), etc.,
and then connect all these points together with line.
• Example:
• >> x=1:1:5;
• >>y=[2 7 0 -8 6];
• >> plot (x,y);
• >> xlabel ('label for x-axis')
• >> ylabel ('label for y-axis')
• >> title ('title')
• Check the following:
• x_points = [-10 : .05 : 10];
• plot(x_points, exp(x_points));
• grid on
• hold on
• plot(x_points, exp(.95 .* x_points), 'm');
• plot(x_points, exp(.85 .* x_points), 'g');
• plot(x_points, exp(.75 .* x_points), 'p');
• xlabel('x-axis'); ylabel('y-axis');
• title('Comparing Exponential Functions');
• legend ('1', '2', '3', '4')
Multiple Plots
-10 -5 0 5 100
0.5
1
1.5
2
2.5x 10
4
x-axisy-
axis
Comparing Exponential Functions
1
2
3
4
Subplots
• multiple plots in the same window, each with their own
axes.
• Subplot (M,N,P)
• M – rows
• N - columns
• P – number of subplot
in the figure
Subplot (2,2,1)
More about figures
• Figure % Open a new figure without closing old figures
• Figure (i) % Open the i-th figure
• Close all % close all open figures
• axis ([xmin xmax ymin ymax]) % sets scaling for the x-
and y-axes on the current plot.
Special Graph Annotations (TeX)
Plot Editor Toolbar
Exercise
• x = (1, 1.05, 1.1, 1.15… 5)
• Y=sin(x)
• Z=log(x)
• Put your name in the title
• Hint: check the doc “linespec”.
Create the following:
1 1.5 2 2.5 3 3.5 4 4.5 5-1
-0.5
0
0.5
1
1.5
2Merav's graph
x
ysin(x)
log(x)
Solution
• >>x=1:0.05:5;
• >>y=sin(x);
• >>z=log(x);
• >> hold on
• >> plot (x,y,'-.r*')
• >> plot (x,z,'-.go')
• >> hold off
• >> title ('Merav''s graph');
• >> xlabel ('x')
• >> ylabel ('y')
• >> legend ('sin(x)', 'log(x)');
More exercise
• Make a 3 three-dimensional graph of (x,y,z) – use Matlab
help.
• Make two separate 2-D graphs, with separate axis, in the
same window: y vs. x, and z vs. x.
1
2
3
4
5
-1
-0.5
0
0.5
10
0.5
1
1.5
2
x
3D graph
y
z
1 2 3 4 5-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1sin(x)
x
y=
sin
(x)
1 2 3 4 50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
x
log(x)
z
Solution
• 3-D graph:
• >> plot3(x,y,z)
• >> grid
• >> xlabel ('x')
• >> ylabel('y')
• >> zlabel('z')
• >> title ('3D graph')
• Subplots
>> subplot (1,2,1);
>> plot(x,y);
>> title ('sin(x)');
>> xlabel('x');
>> ylabel('y=sin(x)');
>> grid;
>> subplot (1,2,2);
>> plot(x,z);
>> xlabel('x');
>> title ('log(x)');
>> grid;
>> ylabel ('z');
Surface Mesh plots
1) Generate a grid of points in the xy-plane using the
meshgrid command.
2) Evaluate the three-dimensional function at these points.
3) Create the surface plot with the mesh command.
Meshgrid - returns all possible combinations of (x,y) points,
where x is taken from X and y is taken from Y, in the form of two
matrices.
you will see in the generated surface mesh plot a bunch of
rectangles, of width and length equal to the regular spacing values
for X and Y, and the height of the corners of the rectangles will be
equal to the value of the function at the rectangles' corner points)
1. >> x_points = [-10 : 1 : 10];
>> y_points = [-10 : 4 : 10];
>> [X, Y] = meshgrid(x_points,y_points);
2. >> Z = X.^2 + Y.^2;
3. >> mesh(X,Y,Z);
>> xlabel('x-axis');
>> ylabel('y-axis');
>> zlabel('z-axis');
-10-8
-6-4
-20
24
68
10
-10
-5
0
5
10
0
20
40
60
80
100
120
140
160
180
200
x-axis
X: -9
Y: -10
Z: 181
y-axis
z-a
xis