learnxinyminutes-docs/matlab.html.markdown

363 lines
9.1 KiB
Markdown
Raw Normal View History

2013-08-25 05:32:33 +00:00
---
language: Matlab
contributors:
- ["mendozao", "http://github.com/mendozao"]
2013-09-14 21:17:41 +00:00
- ["jamesscottbrown", "http://jamesscottbrown.com"]
2013-08-25 05:32:33 +00:00
---
2013-09-14 21:17:41 +00:00
MATLAB stands for MATrix LABoratory. It is a powerful numerical computing language commonly used in engineering and mathematics.
2013-08-25 05:32:33 +00:00
If you have any feedback please feel free to reach me at
[@the_ozzinator](https://twitter.com/the_ozzinator), or
[osvaldo.t.mendoza@gmail.com](mailto:osvaldo.t.mendoza@gmail.com).
2013-09-09 05:52:09 +00:00
```matlab
2013-08-25 05:32:33 +00:00
% Comments start with a percent sign.
%{ Multi line comments look
something
like
this %}
2013-09-14 21:17:41 +00:00
who % Displays all variables in memory
whos % Displays all variables in memory, with their types
2013-08-25 05:32:33 +00:00
clear % Erases all your variables from memory
2013-09-14 21:17:41 +00:00
clear('A') % Erases a aprticualr variable
openvar('A') % Open variable in variable editor
2013-08-25 05:32:33 +00:00
clc % Erases the writing on your Command Window
2013-09-14 21:17:41 +00:00
diary % Toggle writing Command Window text to file
2013-08-25 05:32:33 +00:00
ctrl-c % Abort current computation
2013-09-14 21:17:41 +00:00
edit('myfunction.m') % Open function in editor
type('myfunction.m') % Print the source of function to Command Window
profile viewer % Open profiler
2013-08-25 05:32:33 +00:00
help command % Displays documentation for command in Command Window
2013-09-14 21:17:41 +00:00
doc command % Displays documentation for command in Help Window
2013-08-25 05:32:33 +00:00
lookfor command % Searches for a given command
% Output formatting
format short % 4 decimals in a floating number
format long % 15 decimals
fprintf
% Variables & Expressions
myVariable = 4 % Notice Workspace pane shows newly created variable
myVariable = 4; % Semi colon suppresses output to the Command Window
4 + 6 % ans = 10
8 * myVariable % ans = 32
2013-09-14 21:17:41 +00:00
2 ^ 3 % ans = 8
2013-08-25 05:32:33 +00:00
a = 2; b = 3;
c = exp(a)*sin(pi/2) % c = 7.3891
% Logicals
1 > 5 % ans = 0
10 >= 10 % ans = 1
3 ~= 4 % Not equal to -> ans = 1
3 == 3 % equal to -> ans = 1
3 > 1 && 4 > 1 % AND -> ans = 1
3 > 1 || 4 > 1 % OR -> ans = 1
~1 % NOT -> ans = 0
2013-09-14 21:17:41 +00:00
% Logicals can be applied to matricies:
A > 5
% for each element, if condition is true, that element is 1 in returned matrix
A[ A > 5 ]
% returns a vector containing the elements in A for which condition is true
2013-08-25 05:32:33 +00:00
% Strings
a = 'MyString'
length(a) % ans = 8
a(2) % ans = y
[a,a] % ans = MyStringMyString
% Cells
a = {'one', 'two', 'three'}
a(1) % ans = 'one' - returns a cell
char(a(1)) % ans = one - returns a string
% Vectors
x = [4 32 53 7 1]
x(2) % ans = 32, indices in Matlab start 1, not 0
x(2:3) % ans = 32 53
x(2:end) % ans = 32 53 7 1
x = [4; 32; 53; 7; 1] % Column vector
x = [1:10] % x = 1 2 3 4 5 6 7 8 9 10
% Matrices
A = [1 2 3; 4 5 6; 7 8 9]
2013-09-14 21:17:41 +00:00
% Rows are separated by a semicolon; elements are separated with space or comma
2013-08-25 05:32:33 +00:00
% A =
% 1 2 3
% 4 5 6
% 7 8 9
A(2,3) % ans = 6, A(row, column)
2013-09-14 21:17:41 +00:00
A(6) % ans = 8
% (implicitly concatenates columns into vector, then indexes into that)
2013-08-25 05:32:33 +00:00
A(2,3) = 42 % Update row 2 col 3 with 42
% A =
% 1 2 3
% 4 5 42
% 7 8 9
A(2:3,2:3) % Creates a new matrix from the old one
%ans =
% 5 42
% 8 9
A(:,1) % All rows in column 1
%ans =
% 1
% 4
% 7
A(1,:) % All columns in row 1
%ans =
% 1 2 3
2013-09-14 21:17:41 +00:00
[A ; A] % Concatenation of matrices (vertically)
%ans =
% 1 2 3
% 4 5 42
% 7 8 9
% 1 2 3
% 4 5 42
% 7 8 9
[A , A] % Concatenation of matrices (horizontally)
%ans =
% 1 2 3 1 2 3
% 4 5 42 4 5 42
% 7 8 9 7 8 9
A(:, [3 1 2]) % Rearrange the columns of original matrix
2013-08-25 05:32:33 +00:00
%ans =
% 3 1 2
% 42 4 5
% 9 7 8
size(A) % ans = 3 3
2013-09-14 21:17:41 +00:00
A(1, :) =[] % Delete the first row of the matrix
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
A' % Hermitian transpose the matrix
% (the transpose, followed by taking complex conjugate of each element)
transpose(A) % Transpose the matrix, without taking complex conjugate
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
% Element by Element Arithmetic vs. Matrix Arithmetic
2013-08-25 05:32:33 +00:00
A * B % Matrix multiplication
A .* B % Multiple each element in A by its corresponding element in B
2013-09-14 21:17:41 +00:00
% Plotting
x = 0:.10:2*pi; % Creates a vector that starts at 0 and ends at 2*pi with increments of .1
y = sin(x);
2013-08-25 05:32:33 +00:00
plot(x,y)
xlabel('x axis')
ylabel('y axis')
title('Plot of y = sin(x)')
axis([0 2*pi -1 1]) % x range from 0 to 2*pi, y range from -1 to 1
2013-09-14 21:17:41 +00:00
plot(x,y1,'-',x,y2,'--',x,y3,':'') % For multiple functions on one plot
grid on % Show grid; turn off with 'grid off'
axis square % Makes the current axes region square
axis equal % Set aspect ratio so data units are the same in every direction
scatter(x, y); % Scatter-plot
hist(x); % Histogram
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
z = sin(x);
plot3(x,y,z); % 3D line plot
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
pcolor(A) % Heat-map of matrix: plot as grid of rectangles, coloured by value
contour(A) % Contour plot of matrix
mesh(A) % Plot as a mesh surface
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
h = figure %C reate new figure object, with handle f
figure(h) %M akes the figure corresponding to handle h the current figure
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
% Properties can be set and changed through a figure handle
h = plot(x, y);
set(h, 'Color', 'r')
% 'y' yellow; 'm' magenta, 'c' cyan, 'r' red, 'g' green, 'b' blue, 'w' white, 'k' black
set(h, 'LineStyle', '--')
% '--' is solid line, '---' dashed, ':' dotted, '-.' dash-dot, 'none' is no line
get(h, 'LineStyle')
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
% Variables can be saved to .mat files
save('myFileName.mat') % Save the variables in your Workspace
load('myFileName.mat') % Load saved variables into Workspace
% M-file Scripts
% A script file is an external file that contains a sequence of statements.
% They let you avoid repeatedly typing the same code in the Command Window
% Have .m extensions
% M-file Functions
% Like scripts, and have the same .m extension
% But can accept input arguments and return an output
% Also, they have their own workspace (ie. different variable scope)
% double_input.m - .m file name must be same as function name in file
2013-08-25 05:32:33 +00:00
function output = double_input(x)
%double_input(x) returns twice the value of x
output = 2*x;
end
double_input(6) % ans = 12
2013-09-14 21:17:41 +00:00
% You can also have subfunctions and nested functions.
% Subfunctions are in the same file as the primary function, and can only be
% called from within that function. Nested functions are defined within another
% functions, and have access to both its workspace and their own workspace.
% User input
2013-08-25 05:32:33 +00:00
a = input('Enter the value: ')
2013-09-14 21:17:41 +00:00
% Reading in data
2013-08-25 05:32:33 +00:00
fopen(filename)
2013-09-14 21:17:41 +00:00
% Output
2013-08-25 05:32:33 +00:00
disp(a) % Print out the value of variable a
disp('Hello World') % Print out a string
2013-09-14 21:17:41 +00:00
fprintf % Print to Command Window with more control
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
% Conditional statements
2013-08-25 05:32:33 +00:00
if a > 15
disp('Greater than 15')
elseif a == 23
disp('a is 23')
else
disp('neither condition met')
end
2013-09-14 21:17:41 +00:00
% Looping
% NB. looping over elements of a vector/matrix is slow!
% Where possible, use functions that act on whole vector/matrix at once
2013-08-25 05:32:33 +00:00
for k = 1:5
disp(k)
end
k = 0;
while (k < 5)
k = k + 1;
end
2013-09-14 21:17:41 +00:00
% Timing code execution: 'toc' prints the time since 'tic' was called
tic
A = rand(1000);
A*A*A*A*A*A*A;
toc
2013-08-25 05:32:33 +00:00
2013-09-14 21:17:41 +00:00
% Connecting to a MySQL Database
2013-08-25 05:32:33 +00:00
dbname = 'database_name';
username = 'root';
password = 'root';
driver = 'com.mysql.jdbc.Driver';
dburl = ['jdbc:mysql://localhost:8889/' dbname];
javaclasspath('mysql-connector-java-5.1.xx-bin.jar'); %xx depends on version, download available at http://dev.mysql.com/downloads/connector/j/
conn = database(dbname, username, password, driver, dburl);
2013-09-14 21:17:41 +00:00
sql = ['SELECT * from table_name where id = 22'] % Example sql statement
2013-08-25 05:32:33 +00:00
a = fetch(conn, sql) %a will contain your data
% Common math functions
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
exp(x)
sqrt(x)
log(x)
log10(x)
abs(x)
min(x)
max(x)
ceil(x)
floor(x)
round(x)
rem(x)
2013-09-14 21:17:41 +00:00
rand % Uniformly distributed pseudorandom numbers
randi % Uniformly distributed pseudorandom integers
randn % Normally distributed pseudorandom numbers
2013-08-25 05:32:33 +00:00
% Common constants
pi
NaN
inf
2013-09-14 21:17:41 +00:00
% Solving matrix equations (if no solution, returns a least squares solution)
x=A\b % Solves Ax=b
x=B/a % Solves xa=B
2013-08-25 05:32:33 +00:00
% Common matrix functions
zeros(m,n) % m x n matrix of 0's
ones(m,n) % m x n matrix of 1's
diag(A) % Extracts the diagonal elements of a matrix
eye(m,n) % Indentity matrix
inv(A) % Inverse of matrix A
det(A) % Determinant of A
2013-09-14 21:17:41 +00:00
eig(A) % Eigenvalues and eigenvectors of A
trace(A) % Trace of matrix - equivalent to sum(diag(A))
2013-08-25 05:32:33 +00:00
isempty(A) % Tests if array is empty
2013-09-14 21:17:41 +00:00
all(A) % Tests if all elements are nonzero or true
any(A) % Tests if any elements are nonzero or true
2013-08-25 05:32:33 +00:00
isequal(A, B) %Tests equality of two arrays
2013-09-14 21:17:41 +00:00
numel(A) % Number of elements in matrix
triu(x) % Returns the upper triangular part of x
tril(x) % Returns the lower triangular part of x
cross(A,B) % Returns the cross product of the vectors A and B
2013-09-14 21:17:41 +00:00
dot(A,B) % Returns scalar product of two vectors (must have the same length)
transpose(A) % Returns the transpose of A
2013-09-14 21:17:41 +00:00
flipl(A) % Flip matrix left to right
2013-08-25 05:32:33 +00:00
% Common vector functions
2013-09-14 21:17:41 +00:00
max % largest component
min % smallest component
length % length of a vector
sort % sort in ascending order
sum % sum of elements
prod % product of elements
mode % modal value
median % median value
mean % mean value
std % standard deviation
perms(x) % list all permutations of elements of x
2013-08-25 05:32:33 +00:00
```
## More on Matlab
* The official website [http://http://www.mathworks.com/products/matlab/](http://www.mathworks.com/products/matlab/)
2013-09-14 21:17:41 +00:00
* The official MATLAB Answers forum: [http://www.mathworks.com/matlabcentral/answers/](http://www.mathworks.com/matlabcentral/answers/)