Warning: jsMath requires JavaScript to process the mathematics on this page.
If your browser supports JavaScript, be sure it is enabled.

Basic Matlab/Scilab Instructions

This tour shows some basics about Matlab/Scilab programming.

Contents

Installing toolboxes and setting up the path.

You need to download the following files: signal toolbox and general toolbox.

You need to unzip these toolboxes in your working directory, so that you have toolbox_signal and toolbox_general in your directory.

For Scilab user: you must replace the Matlab comment '%' by its Scilab counterpart '//'.

Recommandation: You should create a text file named for instance numericaltour.sce (in Scilab) or numericaltour.m (in Matlab) to write all the Scilab/Matlab command you want to execute. Then, simply run exec('numericaltour.sce'); (in Scilab) or numericaltour; (in Matlab) to run the commands.

Execute this line only if you are using Matlab.

getd = @(p)path(p,path); % scilab users must *not* execute this

Then you can add the toolboxes to the path.

getd('toolbox_signal/');
getd('toolbox_general/');

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.

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
size(d)
% display the first entry
d(1)
% display the sub-array containing entries 1 and 2
d(1:2)
ans =

     1     4


ans =

     1


ans =

     1     3

You can create pre-defined array using some basic functions

% identity, 1 and random matrices
A = eye(4,4);
B = ones(4,4);
C = rand(4,4);
% transpose
c = b';

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

% note the difference
D = C*A
D = C.*A
% You can apply functions to each entry of a matrix
E = A./C; % division
E = sin(A); % sinus is applied to each entry
E = abs(A + 1i*C); % modulus of each entry
D =

    0.4218    0.6557    0.6787    0.6555
    0.9157    0.0357    0.7577    0.1712
    0.7922    0.8491    0.7431    0.7060
    0.9595    0.9340    0.3922    0.0318


D =

    0.4218         0         0         0
         0    0.0357         0         0
         0         0    0.7431         0
         0         0         0    0.0318

You can modify matrices and arrays in various way.

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;
b(end-2:end) = 1; % to access the last entries

% The equivalent Scilab code is
%       b = b($:-1:1);
b = b(end:-1:1); % reverse a vector

Advanced instructions

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
% threshold to 0 values below .3.
C = C .* (abs(C)>.3);
Hello
Value of x=1.23

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.

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)

n = 256; % size of the image
M = load_image('lena', n);
clf;
imageplot(M);

You can manipulate an image just like an arbitrary array

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