MATLAB

From NoskeWiki
Jump to: navigation, search

About

Matlab interface showing a 2D graph output

MATLAB (matrix laboratory) is a commerical software package which represents a numerical computing environment, high level programming language and visualization package. Matlab was developed by Mathworks and costs on the order of ~$100 for a student licence, or $1900 for a single commercial licence (updated Dec 2012, version 8 / R2012v). Among its features, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages, including C, C++, Java, and Fortran.

I haven't personally used MATLAB much yet, but here I've collected some videos and what few things that I have learnt in MATLAB. Although hideously expensive, I do regret not learning to use it earlier, since suddenly in 2012 I've been told to use it.


Tutorials (the fastest way to learn Matlab)

This represents a page the author has not finished yet, but hopefully will finish soon! As a wiki I can't guarantee the accuracy on any of these pages, but pages with this logo I can almost certainly guarantee DO contain errors and/or big omissions.



Make a shortcut to Matlab

To make a shortcut on your Terminal, edit your profile file:

pico ~/.bashrc
# then add this line:
alias matlab="/usr/local/MATLAB/R2012b/bin/matlab"

After your next restart you can just type "matlab" to launch it.


Install Plugin

CVX

CVX is a Matlab-based modeling system for convex optimization.

Download from here Unpack and copy to:

/usr/local/MATLAB/plugins

Once matlab is open copy this:

cd /usr/local/MATLAB/plugins/cvs
cvx_setup



CVX Examples

cvx_begin
  variables x1 x2
  minimize(x1 + x2)
  subject to
    2*x1 + x2 >= 1
    x1 + 3*x2 >= 1
    x1 >= 0
    x2 >= 0
cvx_end
 
% PROBLEM EXTRA EXC 3.2 / EX 4.1 ANSWERS:
% (a) minimize(x1 + x2)         --> x1=0.4,        x2=0.2
% (b) minimize(-x1 - x2)        --> x1=3.9088e-08, x2=1.0
% (c) minimize(x1)              --> x1=6.0507e-11, x2=9.6117
% (d) minimize(max(x1,x2))      --> x1=0.3333,     x2=0.3333
% (d) minimize(x1^2 + 9*(x2^2)) --> x1=0.5,        x2=0.1667
 
A = [-1, 0.4, 0.8; 1, 0, 0; 0, 1, 0];
b = [1; 0; 0.3];
xdes = [7; 2; -6];
N = 30;
x0 = [0; 0; 0];
cvx_begin
  variables x(3, N+1) umid(N) uneg(N) upos(N)
  minimize(norm(umid,1)+2*norm(upos,1)+2*norm(uneg,1))
  subject to
    umid >= -1
    umid <= 1
    upos >= 0
    uneg <= 0
    for t = 1:N
      x(:, t+1) == A*x(:,t) + b*(umid(t)+uneg(t)+upos(t))
    end
    x(:,1) == x0
    x(:,N+1) == xdes
cvx_end


Keep Files

cd /usr/local/google/home/anoske/Documents/MATLAB


Links