Basic Matlab/Scilab Instructions

Important: Please read the installation page for details about how to install the toolboxes. $\newcommand{\dotp}[2]{\langle #1, #2 \rangle}$ $\newcommand{\enscond}[2]{\lbrace #1, #2 \rbrace}$ $\newcommand{\pd}[2]{ \frac{ \partial #1}{\partial #2} }$ $\newcommand{\umin}[1]{\underset{#1}{\min}\;}$ $\newcommand{\umax}[1]{\underset{#1}{\max}\;}$ $\newcommand{\umin}[1]{\underset{#1}{\min}\;}$ $\newcommand{\uargmin}[1]{\underset{#1}{argmin}\;}$ $\newcommand{\norm}[1]{\|#1\|}$ $\newcommand{\abs}[1]{\left|#1\right|}$ $\newcommand{\choice}[1]{ \left\{ \begin{array}{l} #1 \end{array} \right. }$ $\newcommand{\pa}[1]{\left(#1\right)}$ $\newcommand{\diag}[1]{{diag}\left( #1 \right)}$ $\newcommand{\qandq}{\quad\text{and}\quad}$ $\newcommand{\qwhereq}{\quad\text{where}\quad}$ $\newcommand{\qifq}{ \quad \text{if} \quad }$ $\newcommand{\qarrq}{ \quad \Longrightarrow \quad }$ $\newcommand{\ZZ}{\mathbb{Z}}$ $\newcommand{\CC}{\mathbb{C}}$ $\newcommand{\RR}{\mathbb{R}}$ $\newcommand{\EE}{\mathbb{E}}$ $\newcommand{\Zz}{\mathcal{Z}}$ $\newcommand{\Ww}{\mathcal{W}}$ $\newcommand{\Vv}{\mathcal{V}}$ $\newcommand{\Nn}{\mathcal{N}}$ $\newcommand{\NN}{\mathcal{N}}$ $\newcommand{\Hh}{\mathcal{H}}$ $\newcommand{\Bb}{\mathcal{B}}$ $\newcommand{\Ee}{\mathcal{E}}$ $\newcommand{\Cc}{\mathcal{C}}$ $\newcommand{\Gg}{\mathcal{G}}$ $\newcommand{\Ss}{\mathcal{S}}$ $\newcommand{\Pp}{\mathcal{P}}$ $\newcommand{\Ff}{\mathcal{F}}$ $\newcommand{\Xx}{\mathcal{X}}$ $\newcommand{\Mm}{\mathcal{M}}$ $\newcommand{\Ii}{\mathcal{I}}$ $\newcommand{\Dd}{\mathcal{D}}$ $\newcommand{\Ll}{\mathcal{L}}$ $\newcommand{\Tt}{\mathcal{T}}$ $\newcommand{\si}{\sigma}$ $\newcommand{\al}{\alpha}$ $\newcommand{\la}{\lambda}$ $\newcommand{\ga}{\gamma}$ $\newcommand{\Ga}{\Gamma}$ $\newcommand{\La}{\Lambda}$ $\newcommand{\si}{\sigma}$ $\newcommand{\Si}{\Sigma}$ $\newcommand{\be}{\beta}$ $\newcommand{\de}{\delta}$ $\newcommand{\De}{\Delta}$ $\newcommand{\phi}{\varphi}$ $\newcommand{\th}{\theta}$ $\newcommand{\om}{\omega}$ $\newcommand{\Om}{\Omega}$

This tour shows some basics about Matlab/Scilab programming.

In [2]:
addpath('toolbox_signal')
addpath('toolbox_general')
addpath('solutions/introduction_1_basics')

Comments

Matlab and Scilab are very similar languages. One of the main difference is that Matlab uses the character |%| to write comments, whereas Scilab uses the C-like syntax |//|.

this is a Matlab comment

It is thus very important, in all the numerical tours, to replace |%| comments by |//| comments if you are using Scilab.

Basic Matlab/Scilab commands.

The basic data is a 1D or 2D array.

In [3]:
a = 1; a = 2+1i; % real and complex numbers
b = [1 2 3 4]; % row vector
c = [1; 2; 3; 4]; % column vector
d = 1:2:7; % here one has d=[1 3 5 7]

You an acess one entry of an array, or select a sub-array by indexing.

display the size

In [4]:
size(d)
ans =

     1     4

display the first entry

In [5]:
d(1)
ans =

     1

display the sub-array containing entries 1 and 2

In [6]:
d(1:2)
ans =

     1     3

You can create pre-defined array using some basic functions

identity, 1 and random matrices

In [7]:
A = eye(4,4); 
B = ones(4,4);
C = rand(4,4);

transpose

In [8]:
c = b';

The multiplication operator || is the matrix multiplication. To actually multiplies each entry of a vector, you need to use |.|

note the difference

In [9]:
D = C*A
D = C.*A
D =

    0.8147    0.6324    0.9575    0.9572
    0.9058    0.0975    0.9649    0.4854
    0.1270    0.2785    0.1576    0.8003
    0.9134    0.5469    0.9706    0.1419


D =

    0.8147         0         0         0
         0    0.0975         0         0
         0         0    0.1576         0
         0         0         0    0.1419

You can apply functions to each entry of a matrix

In [10]:
E = A./C; % division
E = sin(A); % sinus is applied to each entry
E = abs(A + 1i*C); % modulus of each entry

You can modify matrices and arrays in various way.

In [11]:
b = sort(b); % sort values
b = b .* (b>2); % set to zeros (threshold) the values below 2
b(3) = []; % suppress the 3rd entry of a vector
B = [b; b]; % create a matrix of size 2x4
c = B(:,2); % to access 2nd column

Is is possible to access directly the last entry of a vector using the keyword |end| in Matlab and |$| in Scilab.

The equivalent Scilab code is b($-2:$) = 1;

In [12]:
b(end-2:end) = 1; % to access the last entries

The equivalent Scilab code is b = b($:-1:1);

In [13]:
b = b(end:-1:1); % reverse a vector

Advanced instructions

In [14]:
disp('Hello'); % display a text
x = 1.23456;
disp( sprintf('Value of x=%.2f', x) ); % print a values with 2 digits
A(A==Inf) = 3; % replace Inf values by 3
A(:); % flatten a matrix into a column vector
max(A(:)); % max of a matrix
Hello
Value of x=1.23

threshold to 0 values below .3.

In [15]:
C = C .* (abs(C)>.3);

To display information of about a function, use the |help| command, for instance |help perform_wavelet_transf|.

Basic programming constructions include |for|, |while| and |switch| instructions.

In [16]:
for i=1:3 % repeat the loop for i=1, i=2, i=3
    disp(i); % make here something
end
i = 3;
while i>0 % while syntax
    disp(i); % do smth
    i = i-1;
end
     1

     2

     3

     3

     2

     1

Load and visualize signals and images

Load and display an image (download function load_image.m should be in the toolboxes)

In [17]:
n = 256; % size of the image
M = load_image('lena', n);
clf;
imageplot(M);

You can manipulate an image just like an arbitrary array

In [18]:
clf;
imageplot(M(1:50,1:50), 'Zoom', 1,2,1);
imageplot(-M, 'Reversed contrast', 1,2,2);