# MATLAB Programming

(Redirected from MATLAB)

MATLAB is a programming language developed by MathWorks. It started out as a matrix programming language where linear algebra programming was simple. It can be run both under interactive sessions and as a batch job.

Most MATLAB scripts and functions can be run in the open source program Octave. This program is freely available for most computing platforms.

GNU Octave and LabVIEW MathScript are systems for numerical computations with an m-file script language that is mostly compatible with MATLAB. Both alternatives can replace MATLAB in many circumstances. While a good deal of the content of this book will also apply to both Octave and LabVIEW MathScript, it is not guaranteed to work in exactly the same manner. Differences and comparison between MATLAB and Octave are presented in Comparing Octave and MATLAB.

## A Tutorial Introduction

All programming languages are introduced by the most famous computer program on the planet, "Hello world", so let's begin with that for the time being. Open Matlab on your computer. You will be greeted by a desktop environment of its own. In the center you can see a window labelled as "Command Window". The cursor should be already flickering there; all you now have to do is to write this...

   disp('Hello world')


and press the return key. The output will be shown just below the command as

   Hello world


So there you have it, a much simple program than in C or C++ we have to call only one function called

   disp()


and pass the argument string in single quotes (not double), but why so? Because we might need to use double quotes inside the string and that would be interpreted as the end of the string argument. Having said this, it is assured that double quotes work inside the string, however escape sequences may have to be used to get the string right.

### Workspace

Matlab is a programming environment in its own and needs a area to store the Variables and other user data that is stored while using the tool. Matlab has a command window as shown, and a base workspace which is the default workspace, functions in Matlab also have their own workspace, the visibility of a variable is dependent on the workspace that it resides in, if the variable is in the base workspace then it is visible to all of the scripts and functions in Matlab, while local variables are visible to that function only and are not usable outside that function.

Type this on the Matlab Command Window

   My_Var = 10


You will see

   My_Var =

   10


as a response, also note that there would also be an addition to the Base workspace.

To check out what all variables are stored in the Matlab workspace, we can use the following command.

   who


This would list out all the variables currently present in the Matlab workspace, but would not give much idea about the data types and the size of the variables, to have those in the result use this command instead

   whos


By this time, i think there would be much clutter on your command window.

To clear out all the output on the command window, use this command.

   clc


This WOULD NOT clear out the variables and the history. so that you would have a new clean and fresh command window.

The output of whos on my screen showed something like this

Now, if you notice the Size is marked as 1X1, but why? The reason for this is that in Matlab all the data is realized as double precision arrays (well, its the way Matlab is designed to work as it is a scientific computing tool). And so scalars like these are realized as a 1X1 array. Simple!

After all this if you think your work is done and you do not need all those variables in the Matlab workspace now, you can relieve yourself of your Programmers baggage by using this command.

   clear


This clears out any and all variables in the workspace. But if your miseries are not yet to finish and would like to remove a variable or two.

   clear <var1> <var2>....


where var1, var2, var3,.... are the variables that you want to clear, do not put the three dots in the end, that's just for description.

### Variables

Variables are just a container of your data. You can give any name to your variable as long as it is under 63 characters, starts with an alphabet and is without any punctuation in between. The reason for not allowing any punctuation is that the punctuation marks like . , : , ; etc have a special meaning in Matlab and can alter the flow of execution

   My_Var


is a perfectly valid variable name. There may be some variables names that are not allowed even if they are perfectly valid variable names, because they are reserved keywords and are used to notify some code execution logic. However their number is limited and meaningful names for variables can be created outside this pool of names. To find if any word is a reserved keyword, run this check on the command line.

   iskeyword('while')


The result would be

   ans =

    1


All values of variables are referred by their current instance in the workspace. The variables can be overwritten during the execution of Matlab scripts and the values vary accordingly. All operations use the current value in the workspace.

Let's try something good. We all know that the value of pi is 3.1416, lets ask Matlab the same, type this on the command window

   pi


The result is

   ans =
3.1416


Lets try overwriting it...

   pi = 0


...and see it once again.

   pi
ans =
0


Calculate the area of a circle now.

   Area = pi * 10 * 10
Area=
0


## Basic MATLAB Concepts

clc; clear all; close all;

[filename, pathname] = uigetfile( {'*.jpg';'*.bmp'}); aa=imread([pathname,filename]); I=aa; bb=imresize(aa,[256 256]); imshow(bb);title('input image');

%%...............%%% RGB2Lab color conversion %%%.........

rgbimage=makecform('srgb2lab'); labimage=applycform(bb,rgbimage); figure, imshow(labimage);title('color conversion image');

%%..............%%% seperate L* a* b* color space %%%.........

L=im2double(labimage(:,:,1)); a=im2double(labimage(:,:,2)); b=im2double(labimage(:,:,3)); figure,imshow(L);title('L* image'); [h,w,o]=size(L);

%%..........%%% applying filter in L* color space %%%..........

for s=1:3

   W(s)=h/2^s;
for i=1:h
for j=1:w
p=(i-W(s));
q=(i+W(s));
r=(j-W(s));
t=(j+W(s));
if p<=0
p=1;
end
if q>256
q=256;
end
if r<=0
r=1;
end
if t>256
t=256;
end
m=p:q;
n=r:t;
%N(s)=W(s)*W(s);
N(s)=size(m,2)*size(n,2);
sum1=sum(sum(L(m,n)));
V=1/N(s);
A=V*sum1;

B(i,j)=L(i,j)-A;
end
end

%B=L-A;
%figure,imshow(B);
azx(:,:,s)=B;



end

contrast_L=azx(:,:,1)+azx(:,:,2)+azx(:,:,3); figure,imshow(contrast_L),title('contrast map L* image');

%%..............%%% find inverse of a* %%%............

figure,imshow(a);title('a* image'); d=max(max(a)); yy=d-a; yy=(yy*5); figure,imshow(yy);title('inv a* image'); [h,w,o]=size(yy);

%%.............%%% applying filter in a* color space %%%........

for s=1:3

   W(s)=h/2^s;
for i=1:h
for j=1:w
p=(i-W(s));
q=(i+W(s));
r=(j-W(s));
t=(j+W(s));
if p<=0
p=1;
end
if q>256
q=256;
end
if r<=0
r=1;
end
if t>256
t=256;
end
m=p:q;
n=r:t;
%N(s)=W(s)*W(s);
N(s)=size(m,2)*size(n,2);
sum1=sum(sum(yy(m,n)));
V=1/N(s);
A=V*sum1;

C(i,j)=yy(i,j)-A;
end
end

%C=L-A;
%figure,imshow(C);
aza(:,:,s)=C;



end

contrast_a=aza(:,:,1)+aza(:,:,2)+aza(:,:,3); figure,imshow(contrast_a),title('contrast map a* image');

%%.............%%% find final scaling contrast map %%%.......

%%...........%%% gabor filter outputs %%%.......................

[gabor_timage,u,v,GT,filter]=final_gabor(aa);

%%..........%%% removing erythema & dark pixels %%%..........

ts=0.4;  %% set threshold value R=Scaling_contrast; for i=1:h

   for j=1:w
if Scaling_contrast(i,j)>=ts
R(i,j)=1;
else
R(i,j)=0;
end
end


end

figure,imshow(R);title('Removing erythema');

• Calculator

## Graphics

### Handle Graphics

What is a handle?
Figure handles
Axis handles
Other types of handles

## Numerical Manipulation

### Linear Algebra

It is the Matrix laboratory after all.

• Operations
• Transpose
• Systems of linear equations
• Row reduced echelon form
• Inverse
• Coffactor, minor
• Jacobian

### Differential Equations

Different versions of MATLAB handle this differently. We will focus on versions 6.5 and 7.x, primarily on MATLAB 7.x since it is the latest. A note will appear when the procedure is different for ver. 6.

## Examples

### Filtering

• Moving Average
• Alpha Beta
• Kalman
• PSD estimation
• Entropy
• Markov Processes
• Queuing Theory

### Phase vocoder

See "Phase vocoder and encoder in MATLAB" for an example phase vocoder and the corresponding sound sample encoder in MATLAB.

## Object Oriented Programming

MATLAB as well as Octave have object oriented capabilities. Yet, technically it is not fully an object oriented language.

An Object Oriented Language(OOL) has three components: 1. Polymorphism 2. Inheritance 3. Encapsulation

Octave can be extended by adding new objects. Those objects can overload the operators like e.g. assignment, slicing, comparison.

While in MATLAB, this can be done with m-script, in Octave new objects are implemented as C++ classes. A simple example of how objects can be added to Octave can be found here.

## An alternative to MATLAB: Octave

### What is Octave ?

A short presentation of Octave and its history.

### Differences between Octave and MATLAB

The most important differences between Octave and MATLAB that anyone willing to use Octave instead of MATLAB should be aware of.

## Toolboxes and Extensions

The toolboxes are pretty good if you can afford them. In version 7 there are a lot of toolboxes.

### Legacy Toolboxes

• GUIDE allows the creation of interactive user interfaces.
• Simulink is for modeling, simulating and analysing systems.
• Psychtoolbox is a set of tools that aid in vision research.
• Distributed computing- The distributed computing toolbox is a set of tools that aid in distributing models over a cluster.
• Optimization- The optimization toolbox includes various algorithms for minimization.

## MATLAB in medicine

„Image Processing in Optical Coherence Tomography using Matlab” is a book which will introduce you to subtleties related to the implementation of selected fragments of algorithms, the notation of some of them in the MATLAB environment has been given. The presented source code is shown only in the form of example of implementable selected algorithm. The book is addressed to ophthalmologists , IT specialists and students involved in the development of applications designed for automation of measurements for the needs of medicine.