MATLAB programming language Tutorial
This MATLAB programming language tutorial basics of matlab, how to start and quit matlab,flow control,matrices,arrays,arithmetic operators,matrix operations,load function,save function,plotting functions,script and functions in matlab and sample matlab program.
This section covers basics of matlab including Benefits of MATLAB and Applications of MATLAB.
Basics of MATLAB
MATLAB is scientific numerical analysis programming language. It is widely used for mathematical algorithm development requiring complex operations. It is developed by Mathworks Inc.(www.mathworks.com?) The beauty of matlab is matrix operations, data manipulation and plotting and interfacing with other programming languages (FORTRAN, java, c, c++). GUI can also be built with the help of matlab GUI tools for easy user interaction with backend matlab code. In this matlab programming tutorial we will go through matlab programming syntax and sample matlab program.
MATLAB WORK ENVIRONMENT
This section covers how to start and quit matlab,load/save operation,plots/figures, Script and functions,Creating and working with arrays, vectors, matrices.
How to start and quit MATLAB
>>One can start MATLAB either using shortcut icon created during installation or from program files.
Once MATLAB opens, window with following sub windows get open.
1. Command window
3. Command history
>>To exit MATLAB, type quit In the command window or go to File> EXIT MATLAB .
>> To save matlab workspace variables having .mat extension use either of following.
File > Save OR
>> To save in any other format use proper extension other than .mat such as .dat
Syntax for Save function:
save filename -> Used to save all the workspace variable to the file specified by filename
save filename var1 var2 -> used to save var1 and var2 to the file 'filename'
save ... option -> Used to save with option as specified.
>> To load matlab variables from a file to the matlab workspace use either of following.
File > Import Data OR
Syntax for load function:
load filename -> loads all the variables from the file to matlab workspace.
load filename X Y Z ->loads variables X,Y and Z from the file to the matlab.
Plots and figures,Creating simple 2D plots
>> figure and plot are the functions used for plotting variables on
x, y, z co-ordinates based on need.
>> plot is used for 2D plotting and plot3 is used for 3D plotting.
>>'mesh' and 'meshc' are useful functions for plotting in 3D.
Script and functions
There are two ways .m files are created for different application. Script is the set of commands stored as .m file and will execute all the commands stored in the sequence when user calls the m file with its name. Script does not take or return any arguments and operate mainly on the data available in matlab workspace. Matlab Function can take and return arguments. Local variables are also defined which will be local to the respective function. Global variables can be defined in main.m file. Just type 'help' in the command prompt or 'help function_name' to get detailed description of the command or function to use.
OPERATORS AND BUILT-IN FUNCTIONS
This section covers Arithmetic Operators,Relational Operators,Logical Operators,Built-in-functions,Input and Output in MATLAB
\ Left division
^ Power or exponent
' Complex conjugate transpose
( ) Evaluation Order in a expression
<= Less than oe equal
> Greater than
>= Greater than or equal
~= Not equal
| Logical OR
~ Logical complement(NOT)
xor Exclusive OR
Refer following link from MathWorks Inc to know many such functions provided in MATLAB.
CONTROL FLOW IN MATLAB
This section covers While loop,If-else if-else statement and for loop.
M = sum(a,b)
M = multiply(a,b)
M = divide(a,b)
M = sum(a,b)
M = multiply(a,b)
M = divide(a,b)
error('This is impossible')
for j = 1:n
H(i,j) = 1/(i+j);
while cond1 > cond2
continue and break statements are also used similarly as they are used in C programming language.
MATRICES AND VECTORS
This section covers creating matrices and vectors,Indexing matrices,initializing and reshaping and Manipulation of matrices.
Matrices and Array
Will store A as matrix in the matlab workspace and is 4 x 4 matrix(4 rows and 3 columns) will be as shown below.
1 2 3
5 6 7
9 10 11
13 14 15
A(i,j) will extract ith row and jth column element.
For example A(2,2) equals 6.
A(:,1) represent all the rows of 1st column.
A(2:3,2) represent 2nd and 3rd rows of the 2nd column.
Matrix with single row is called as array. Following is the example of Array A with 5 elements.
A=[1 2 3 4 5];
A-B -> Subtraction of two matrices
A*B -> Multiplication of two matrices
A.*B -> Multiplication of elements of two matrices
A/B -> Right Division of two matrices, Result of B/A is equal to the result of B*inv(A)
A./B -> Array Right Division, A and B should be of same size
A\B ->Left Division of two matrices, Result of A\B is equal to result of inv(A)*B,
A.\B -> Array Left Division, A and B should be of same size
x^P ->If x scalar and P matrix, x^P is x raised to the matrix power P using eigenvalues and eigenvectors. If both are matrices it will result in error.
A.^B -> Array power
A' -> Transpose of the matrix
A.' ->Array transpose
'length' and 'size' functions will give dimensions of the matrix/array.
STRUCTURE AND CELL in MATLAB
This section covers Creating/Manipulating structures and Creating/Manipulating cells.
A structure will have several fields, several fields will have different types of data. Single field must contain data of the same type.
We will see example of the structure by name 'Springsem' with fields course and score as shown below.
Springsem.score = [70 80 90];
Type following at the command prompt will produce all the fields of the structure.
score: [70 80 90]
A cell is the most versatile data object in MATLAB. It can contain any type of the data for example,
array,strings,structures or cells. Let us create a cell as mentioned below.
% cell(2) will do the same
C(1,1) = rand(2); % Put a 2x2 random matrix in the 1st box
C(1,2) = char('mohan','john'); % put a string array in the 2nd box
C(2,1) = Springsem; % put a structure in the 3rd box
C(2,2) = cell(2,2); % put a 2x2 cell in the 4th box
Sample Large matlab program
This section covers example of large MATLAB program using multiple m files
This program adds various impairments (awgn, frequency offset, Rayleigh channel and DC offset) to the ideal modulated data and plots constellation diagram.
main.m -> Main matlab file
frequency_offset -> will incorporate frequency offset to the input vector
wimax_mapping -> will convert input binary vector to the complex data output based on modulation scheme selected
Run the main.m file to see the results.
mod=input('Enter 1 for bpsk, 2 for qpsk, 4 for 16qam, 6 for 64qam:');
else printf('wrong entry');
%This part will generate binary vector as per length entered by user
%Mapping of binary data
figure;plot(real(map_out_awgn),imag(map_out_awgn),'r+');title('constellation with Added AWGN');
%Adding Frequency Offset
foff=input('Enter Frequency offset:');%= 10e3; % Hz
foff=(foff)/20e6; % 20MHz is the Bandwidth of the system
figure;plot(real(map_out_foff),imag(map_out_foff),'r+');title('constellation with Frequency offset');
%Adding Rayleigh channel
choice=input('Enter 1 to apply the channel, other no. to bypass:');%10 Hz;sample time=0.1e-3;
tau=[0.0 0.4 0.9];
pdb=[0 -15 -20];
chan = rayleighchan(ts,doppler,tau,pdb);
%TS is the sample time of the input %0.1e-3;
%signal, in seconds. FD is the maximum Doppler shift, in Hertz. %100 Hz
figure;plot(real(map_out_chl),imag(map_out_chl),'r+');title('constellation with channel');
disp('no channel applied proceed to DC offset');
%Adding DC offset
DCO=input('Enter DC offset:'); %2.5;
%map_out_dc= (real(mapper_out)+DCO) +i*(imag(mapper_out)+DCO);
map_out_dc= mapper_out* DCO;
figure;plot(real(map_out_dc),imag(map_out_dc),'r+');title('constellation with DC offset');
% figure;plot(abs(fft(mapper_out,256)));title('spectrum ideal');
% figure;plot(abs(fft(map_out_dc,256)));title('spectrum with DC offset');
function [d1] = frequency_offset(d1,CFO)
m = length(d1);
d1 = d1.*exp(i*2*pi*(0:m-1)*CFO);
input_seq = data;
b=fact*[1+1i -1+1i 1-1i -1-1i];
b=fact*[1+1i 1+3i 1-1i 1-3i 3+1i 3+3i 3-1i 3-3i -1+1i -1+3i -1-1i -1-3i -3+1i -3+3i -3-1i -3-3i];
b=fact*[3+3i 3+1i 3+5i 3+7i 3-3i 3-1i 3-5i 3-7i 1+3i 1+1i 1+5i 1+7i 1-3i 1-1i 1-5i 1-7i 5+3i 5+1i 5+5i 5+7i 5-3i 5-1i 5-5i 5-7i 7+3i 7+1i 7+5i 7+7i 7-3i 7-1i 7-5i 7-7i -3+3i -3+1i -3+5i -3+7i -3-3i -3-1i -3-5i -3-7i -1+3i -1+1i -1+5i -1+7i -1-3i -1-1i -1-5i -1-7i -5+3i -5+1i -5+5i -5+7i -5-3i -5-1i -5-5i -5-7i -7+3i -7+1i -7+5i -7+7i -7-3i -7-1i -7-5i -7-7i];
otherwise error('wrong choice');
Useful Links to MATLAB Source codes
The MATLAB Source code Section on RF Wireless World site covers matlab coding on image processing, signal processing and communication domain.
MORE LINKS to MATLAB SOURCE CODES:- PTS for PAPR reduction OFDM Preamble generation Time off estimation corr Freq off estimation corr channel estimation 11a WLAN channel 11g WLAN channel 15.3 UWB channel 15.4a UWB channel 16d SUI Channel 16e wimax channel Rician channel Rayleigh channel SC-FDMA PN sequence generation 3D plotting AM FM PM modulation OFDMA Tx Rx AES DES carrier aggregation CCDF FIR Filter IIR Filter Low Pass FIR Viterbi decoder CRC8 CRC32