Plotting commands
fig1 = plot(x,y) 2d line plot, handle set to fig1
set(fig1, ’LineWidth’, 2) change line width
set(fig1, ’LineStyle’, ’-’) dot markers (see *)
set(fig1, ’Marker’, ’.’) marker type (see *)
set(fig1, ’color’, ’red’) line color (see *)
set(fig1, ’MarkerSize’, 10) marker size (see *)
set(fig1, ’FontSize’, 14) fonts to size 14
figure new figure window
figure(j) graphics object j
get(j) returns information
graphics object j
gcf(j) get current figure handle
subplot(a,b,c) Used for multiple
figures in single plot
xlabel(’\mu line’,’FontSize’,14) names x/y/z axis
ylim([a b]) Sets y/x axis limits
for plot to a-b
title(’name’,’fontsize’,22) names plot
grid on/off; Adds grid to plot
legend(’x’,’y’,’Location’,’Best’) adds legends
hold on retains current figure
when adding new stuff
hold off restores to default
(no hold on)
set(h,’WindowStyle’,’Docked’); Docked window
style for plots
datetick(’x’,yy) time series axis
plotyy(x1,y1,x2,y2) plot on two y axis
refreshdata refresh data in graph
if specified source
drawnow do all in event queue
* Some markers: ’, +, *, x, o, square
* Some colors: red, blue, green, yellow, black
* color shortcuts: r, b, g, y, k
* Some line styles: -, --, :, -.
* shortcut combination example: plot(x,y,’b--o’)
Output commands
format short Displays 4 digits after 0
format long Displays 15 digits after 0
disp(x) Displays the string x
disp(x) Displays the string x
num2str(x) Converts the number in x to string
num2str([’nA is = ’ OFTEN USED!
num2str(a)]) !
mat2str(x) Converts the matrix in x to string
int2str(x) Converts the integer in x to string
sprintf(x) formated data to a string
System commands
addpath(string) adds path to workspace
genpath(string) gets strings for subfolders
pwd Current directory
mkdir Makes new directory
tempdir Temporary directory
inmem Functions in memory
exit Close matlab
dir list folder content
ver lists toolboxes
Nonlinear nummerical methods
quad(fun,a,b) simpson integration of @fun
from a to b
fminsearch(fun,x0) minimum of unconstrained
multivariable function
using derivative-free method
fmincon minimum of constrained function
Example: Constrained log-likelihood maximization, note the -
Parms_est = fmincon(@(Parms) -flogL(Parms,x1,x2,x3,y)
,InitialGuess,[],[],[],[],LwrBound,UprBound,[]);
Debbuging etc.
keyboard Pauses exceution
return resumes exceution
tic starts timer
toc stops timer
profile on starts profiler
profile viewer Lets you see profiler output
try/catch Great for finding where
errors occur
dbstop if error stops at first
error inside try/catch block
dbclear clears breakpoints
dbcont resume execution
lasterr Last error message
lastwarn Last warning message
break Terminates executiion of for/while loop
waitbar Waiting bar
Data import/export
xlsread/xlswrite Spreadsheets (.xls,.xlsm)
readtable/writetable Spreadsheets (.xls,.xlsm)
dlmread/dlmwrite text files (txt,csv)
load/save -ascii text files (txt,csv)
load/save matlab files (.m)
imread/imwrite Image files
Programming commands
return Return to invoking function
exist(x) checks if x exists
G=gpuArray(x) Convert varibles to GPU array
function [y1,...,yN] = myfun(x1,...,xM)
Anonymous functions not stored in main programme
myfun = @(x1,x2) x1+x2;
or even using
myfun2 = @myfun(x) myfun(x3,2)
Conditionals and loops
for i=1:n
procedure Iterates over procedure
end incrementing i from 1 to n by 1
while(criteria)
procedure Iterates over procedure
end as long as criteria is true(1)
if(criteria 1) if criteria 1 is true do procedure 1
procedure1
elseif(criteria 2) ,else if criteria 2 is true do procedure 2
procedure2
else , else do procedure 3
procedure3
end
switch switch_expression if case n holds,
case 1 run procedure n. If none holds
procedure 1 run procedure 3
case 2 (if specified)
procedure 2
otherwise
procedure 3
end
General comments
• Monte-Carlo:
If sample sizes are increasing generate largest
size first in a vector and use increasingly larger portions for
calculations. Saves time+memory.
• Trick: Program that (1) takes a long time to run and (2)
doesnt use all of the CPU/memory ? - split it into more
programs and run using different workers (instances).
• Matlab is a column vector based language, load memory
columnwise first always. For faster code also prealocate
memory for variables, Matlab requires contiguous memory
usage!. Matlab uses copy-on-write, so passing pointers
(adresses) to a function will not speed it up. Change
variable class to potentially save memory (Ram) using:
int8, int16, int32, int64, double, char, logical, single
• You can turn the standard (mostly) Just-In-Time
compilation off using: feature accel off. You can use
compiled (c,c++,fortran) functions using MEX functions.
• Avoid global variables, they user-error prone and compilers
cant optimize them well.
• Functions defined in a .m file is only available there.
Preface function names with initials to avoid clashes, eg.
MrP function1.
• Graphic cards(GPU)’s have many (small) cores. If (1)
program is computationally intensive (not spending much
time transfering data) and (2) massively parallel, so
computations can be independent. Consider using the GPU!
• Using multiple cores (parallel computing) is often easy to
implement, just use parfor instead of for loops.
• Warnings: empty matrices are NOT overwritten ([] + 1 = []).
Rows/columns are added without warning if you write in a
nonexistent row/column. Good practise: Use 3i rather than
3*i for imaginary number calculations, because i might have
been overwritten by earlier. 1/0 returns inf, not NaN. Dont
use == for comparing doubles, they are floating point
precision for example: 0.01 == (1 − 0.99) = 0.
Copyright
c
http://www.econ.ku.dk/pajhede/