Introduction to MATrices LABolatory (MATLAB) as Part of Digital Signal Processing Course By Ahmed Fawzy Gad Faculty of Computers and Information (FCI) Menoufia University Egypt ahmed.fawzy@ci.menofia.edu.eg ‫المنوفية‬ ‫جامعة‬ ‫والمعلومات‬ ‫الحاسبات‬ ‫كلية‬ ‫قسم‬‫المعلومات‬ ‫تكنولوجيا‬ ‫الرقمية‬ ‫اإلشارات‬ ‫معالجة‬ MENOUFIA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATION INFORMATION TECHNOLOGY DEPARTMENT DIGITAL SIGNAL PROCESSING ‫المنوفية‬ ‫جامعة‬
MATLAB Course Syllabus o MATLAB Installation o MATLAB Packages  Definition  How to use a toolbox? (Java vs. MATLAB)  Examples of general and specific toolboxes o MATLAB Versions and Releases o What is MATLAB? o Overview about MATLAB Desktop o Windows and Layout o Command Window  MATLAB Modes (Interactive & Scripting)  How Command Window interactive mode works (REPL)  Example 2+3  Statement separator and terminator (, and ;)  Example 1+1;2+3,5-3  ans variable  Multiple Commands at the Same Line (Comma ,)  Multiple-Lines Commands - Line Continuation (Ellipses …)  Clearing Command Window (clc) o Command History Window  Definition (stack)  Navigating between commands  Other ways to restoring and modifying commands (drag&drop/copy&paste)  Deleting Commands (single, multiple, all) o Workspace Window  Clearing Variables o Current Folder Window o Other Windows  Editor Window
o MATLAB Variables o Naming Convention o Checking variable name length and validity o MATLAB Keywords  Difference between keyword and reserved variable  Avoiding confliction with these variables o Commands related to variables o Variable Data Types o Signed and unsigned types o Type Casting o Command Window Numeric Display Formats o MATLAB Operators and Corresponding Functions o Arithmetic Operators o Relational Operators o Logical/Elementwise Operators o Bitwise Operators o Assignment Operators o Set Operators o Operators Precedence o MATLAB Documentation o Different ways to access MATLAB documentation o Frequent Mathematical Functions o Arithmetic Functions o Exponential and Logarithmic Functions o Trigonometry Functions o Scripting o Limitations of Command Window o Opening the Editor Window (MATLAB Desktop & edit) o Creating a new script o Running a script using absolute path (run) o Running a script in the current folder using name only o How MATLAB finds scripts?  Current Folder
 MATLAB Search Paths o Summary of the different ways to run a script o Scripts vs. Functions o MATLAB Comments o Matrices and vectors o Everything in MATLAB is a matrix o Introducing Array Editor Window  Example to edit a variable  Sharing data between MATLAB and MS Excel o MATLAB array types o Matrices and Arrays  Creating a vector (single row matrix)  Indexing a vector  Single value indexing  Multiple values indexing o Example: Even indexed elements o Example: Odd indexed elements  Creating a matrix (multi-row matrix)  Indexing a matrix  Single value indexing  Multiple values indexing o Single row, multiple columns o Multiple rows, single columns o Multiple rows, multiple columns o MATLAB Control Structures o Selection Structures  if  if  if-else  if-elseif  if-elseif-else  if-elseif-elseif-…-else
 switch o Repetition Structures  for  while o Figures and Plots o figure o plot  Common plot version plot(x,y)  Simple plot example  Relationship between plot and figure  Multiple plots commands but ignoring the figure command  Multiple plots on the same figure  Using the plot command: single figure, multiple plot  Using the hold on and hold off commands: single figure, multiple plot  Using subplot command: single figure, multiple plot o title o xlabel o ylabel o linspace o axis o xlim o ylim o Other plotting functions  stem  stairs  bar  scatter
MATLAB Installation MATLAB Packages Definition: MATLAB consists of a set of toolboxes and each toolbox contains a set of pre-defined functions that actually implements a commonly used code by programmers. For example, programmers may need to calculate mean for a set of numerical values. MATLAB actually implements a mean function packaged in a toolbox that can be used easily by programmers. How to use? For a programming language like Java, it consists of a set of classes in a package and multiple packages can be found in a single project. To be able to use a class within a specific package you need to import that package which appears tiresome. But MATLAB makes things easier and not requires you to import the toolbox when using it from your code. What is required is to install that toolbox. When installing MATLAB, you have the option to select the toolboxes to be installed. There are multiple toolboxes to install and toolboxes selection depends on your purpose. Examples of general and specific toolboxes: The most common general toolboxes that can be used in a wide range of applications are such as:  Signal Processing Toolbox  Statistics and Machine Learning Toolbox Other useful toolboxes specific to the application of image analysis are like:  Image Acquisition Toolbox  Image Processing Toolbox  Computer Vision System Toolbox
Before being asked to create work by your hands it is required to understand the tools you will use to create that work. So next is to understand MATLAB well before being asked to create MATLAB scripts your own. MATLAB Versions and Releases The first step in learning most of the programming tools is to understand its history. The history will help you have a good background about that tool and give you better understanding about its capabilities. For example, if you are asked to create an Android application the first step is to know which version of Android the application targets. Android has different versions from Android 1.6 Donut to Android 6.0 Marshmallow and each one may have some differences from the other versions. Knowing which version you target will help you decide which functions this version provides and you can use to build the application. MATLAB has a strong history as its first version MATLAB 1.0 was published in 1983. MATLAB is continuing in its race and now in 2016 its 9.1 version was released. MATLAB has a new version every year. Each version of MATLAB has two releases marked either as a and b. For example, in 2013 MATLAB has two releases, one in the beginning of the year and marked as a and another at the end of the year marked as b. The release is written in this format: YearRelease. For example, 2013a, 2013b, 2014a, 2014b, 2015a, 2015b. It is important to know which version and release of MATLAB you use because a common error that occurs is using a function that is not supported by your installed version of MATLAB. For example, if MATLAB 2010b was installed and you tried to use a function provided by MATLAB 2012a, you will get an error. So it is important to check whether the function is provided by the installed version or not. Example is the timezones function that is supported in MATLAB 2015b https://www.mathworks.com/help/matlab/ref/timezones.html. What is MATLAB? MATLAB is short for MATrices LABoratory. We can`t say that MATLAB is a computer language and also can`t say it is just a software. MATLAB is not just software because if it was just a software so what is the explanation that there is some programming within it?
Also it is not just a language because if so, what is the explanation about the tools found in the program interface? A better definition for MATLAB: MATLAB is short for matrices laboratory which is software that provides an environment to analyze data and perform scientific operations in addition to incorporating programming. MATLAB allows some functions to be performed using GUI without knowledge about programming at all but also it provides means of programming allowing users to create their custom applications. Some features can be accessed from both the MATLAB interface and programming. Programming is a good way to do the job because it allows users to create their own customized applications that can intelligently fit their purpose rather than depending on the provided features from MATLAB. These features may be limited to a specific task and may not completely fit the requirement of the user so some users prefer to create their own applications from scratch. Example of features provided from both interface and programming:  Neural Networks (NNs) can be created from MATLAB interface and also using code.  Video frames can be displayed using MATLAB built-in program accessed from interface and also can be displayed using code. But the MATLAB interface way to capture frames has limitations because it is difficult to customize this interface to fit your needs like specifying the frame size, bit depth, frame rate, and other parameters. Using programming, it can be easier to customize the application parameters to fit your needs. In conclusion, features provided by MATLAB interface can be used for testing and on- the-fly operations but programming is the better option to use to create your own custom application because it provides better control.
MATLAB Windows MATLAB mainly consists of 4 main menus that appear in the interface: 1. Command Window 2. Command History 3. Workspace 4. Current Folder window These windows can be placed in different layouts that can be changed from MATLAB as follows: Desktop >> Desktop Layout Then choose the appropriate layout. You can close, lock, unlock, minimize or maximize any of these windows. There are other windows like:  Script Editor Window  Array Editor Window Command Window MATBAB commands can be executed in two modes like Python: 1. Interactive Mode 2. Scripting Mode Interactive Mode Interactive mode is via the MATLAB desktop Command Window. In the interactive mode, commands are entered in the Command Window command by command in a style called Read Evaluate Print Loop (REPL). When one command is entered by pressing enter, it will be read by MATLAB Command Window then get evaluated or executed. The command may generate result and it will be printed. Finally the console will loop again the read state and be ready to accept new commands. Command Window has a number of properties: Single-Line Commands Command window is the main window used to enter commands regularly as single-line commands next to the command prompt >>. To execute a command in the Command window, write the command then press enter to allow MATLAB to execute the command. >> 2+3
Some commands will return result. If the command has no variable to store its results, the default variable called ans is used. Command window is not a text file as you are limited only to enter commands at the current command prompt location and can`t go back and modify a command that actually shown in the command window. Ending statement by a semicolon When no semicolon ; used after the command, its result is shown in the Command Window after pressing enter. Note that semicolon not prevents results from returning into the variables but prevents results from appearing in the Command Window. If a command ended with a semicolon, its results are omitted from appearing in the Command window. In this case to print the variable value, use a function like disp() that accepts only a string. Multiple commands in the same line Multiple commands can appear at the same line by separating them by comma or semicolon. Note that semicolon is used to not print results of its statement. So semicolon is regarded statement terminator an also terminator but comma is just a statement separator. Multiple-Lines Commands (Line Continuation …) If the command was very long to appear in a single line, it can be extended to a second line using ellipsis … . Example: >> 2+ … >> 3 Spaces do not affect commands so a=5; is similar to a = 5; There are a set of commands related to the Command Window like:  clc Command History Commands are saved into a stack in the Command History window. Commands are stored across sessions. So restarting MATLAB will not destroy the saved variables and only destroyed if cleared manually. Navigating between commands
We can navigate through commands entered previously using the up and down arrow keys in the Command Window to avoid retyping the same commands and also you can modify them. Other ways to reenter and modify previously entered commands By double clicking a command in the Command History window, it will be entered automatically in the Command window as if it was written and then executed without any modifications. To modify it before execution, drag and drop or copy and paste the command, make the required changes then press enter to execute it. Delete Command History Window Commands Commands stored in the Command History Window can be deleted individually or as groups or even completely deleted:  Delete a single command: select it and press delete or right click the command and select the "Delete Selection" option.  Delete multiple commands: select commands to be deleted and press delete or right click any of them and select "Delete Selection" option.  Delete all commands: right click any of the commands in the Command History Window and choose the last option "Clear Command History". Workspace Window Result of a command if any is stored into a memory variable that will appear in the Workspace window. If the command was anonymous and not assigned to a variable, its results will be stored in the ans variable. Variables can be cleared using the clear command:  Clear a single variable: clear x  Clear multiple variables: clear x y z …  Clear all variables: clear all As a summary for the first three windows, commands are entered and executed in the Command window. Commands entered are stored in a stack in the Command History window. If the commands return a result, it will be stored in variables in memory and appear in the Workspace windows.
Current Folder All paths are relative to the current folder. It is used to show and modify the MATLAB current folder directory. For each window, there is a corresponding command to set focus to that window: commandwindow, commandhistory, and workspace.
MATLAB Variables Naming Convention MATLAB variables can use any combinations of a-z characters either small or capital and numbers 0-9 in addition to underscore _. They can`t start with a number or underscore. If a variable name consists of more than one word, you can combine them using underscores or in a more recommended fashion by capitalizing the very first character of words other than first. So instead of test_result use testResult. Variable names has a maximum length equals to the value returned by namelengthmax command that is relative to the system. Names larger than namelengthmax will be truncated to namelengthmax. To check if a string can be a valid variable name: isvarname(‘var’). It returns 1 for valid variable names and 0 for invalid variable names. MATLAB variables are case sensitive so variable var is different from Var. There are a set of commands that are related to variables: who, whos, clear/clear all, clear var1, clear var1, var2, …, exist. Variable names can`t be one of the reserved or key words in MATLAB such as a built-in function mean. Difference between keyword and reserved word: Keyword is a word that has special meaning in the language. Reserved word is a word that is reserved by the language and can`t be used by the programmer as a variable name. Question: if, for and while are keywords or reserved words? Answer: They are both keywords and reserved words. They are keywords because they have special meaning in the language. They are reserved words because they can`t be used as variable names. In general, to check if a word is reserved word, try to use it as a variable name. If the name was valid then it is not a reserved word. There are a number of MATLAB built-in variables. Some of them have a constant value and others can change value based on machine.  pi: The mathematical constant 𝜋.
 i & j: Imaginary number which is the square root of -1 or √−1.  Inf or inf: Arithmetic representation of positive infinity floating-point values that result from operations such as division by zero or overflow.  NaN or nan: Not a number to indicate values that can`t be real or complex such as 0/0 or Inf/Inf or any operation involving NaN.  eps: The machine epsilon is the minimum distance between two floating-point variables that MATLAB can recognize. If the difference between two variables is less than epsilon of the machine, MATLAB will say that they are equal and difference between them is 0. Example: a=1; b=1+eps; % b-a is eps. b=1+eps/2; %b-a is 0 because difference between the variables is less than epsilon.  realmax: Largest floating-point number in MATLAB. Overflow occurs if a number is larger than this number and will be clipped to realmax. Some cases where number is very larger than realmax the result is Inf rather than just overflow and clipping.  realmin: Smallest floating-point number in MATLAB. Similar to realmax as underflow occur if a number is less than it and if the number was very smaller than it, results is 0.  intmax & intmin: Maximum and minimum integer values. They default to int32. To find maximum/minimum for other integer types, specify them as follows intmin/intmax(‘int8’).  pwd: Contains MATLAB current folder. pwd stands for Print Working Directory.  cd: Change MATLAB current folder. Example cd(‘C:/test’). cd stands for Current Directory.  dir: Returns a list of folder contents.  date: current date Note that all of these variables can have their value changed so be careful. This is because one can assume that i=j= √−1. But the user may by mistake create a variable named i or j. So if the user set i=5; then the old value will be overwritten and lead to logical errors.
MATLAB Data Types Don`t think that because MATLAB does not declare the variable type when the variable is created that no data types exist for MATLAB. Data types actually exist. Some programming languages like Java and C++ require variable type to be declared explicitly by the programmer. MATLAB knows variable type implicitly from the assigned data. There are a number of built-in data types for MATLAB variables. Each variable has a type and a range that specify its characteristics in addition to a set of manipulators to perform operations over that type. The type and operations are called classes. Primitive data types in MATLAB including:  Integer: int8/uint8, int16/uint16, int32/uint32, int64/uint64  Floating-point: single, double % Any number is double by default.  Character: char  Logical: logical Date Type Casting There is a function with the same name as each type to convert data to that type. Example, int8(5.4) Change Command Window numeric display format By default, MATLAB Command Window displays numeric results as short with 4 decimal places. To change this default format: File >> Preferences >> Command Window >> Text Display >> Numeric Format & Numeric Display. Numeric formats available are such as short (default) 4 digits, long (15 digits), + (+/- /blank for positive/negative/zeros results, bank (currency format with 2 digits), hex, ratio. Also numeric display or line spacing can be changed between loose and compact formats. These formats can be changed programmatically using the format function as follows: format short % numeric format format compact % numeric display Programmatically just changes the format for a single MATLAB session. To maintain the effect for future sessions, use MATLAB preferences.
Operators and Operators Precedence rules Operators can be unary, binary or both.  Arithmetic Operators : + plus, - minus, * mtimes, .* times, / mdivide, ./ divide, ^ mpower, .^ power, mod, rem, --, ++  Relational Operators : == eq, ~= ne, > gt, < lt, >= ge, <= le  Logical Operators : && and, || or, ~ not, xor  Bit-/element-wise Operators : & bitand, | bitor, bitcom, bitxor  Assignment Operators : =  Set Operators : intersect, union Arithmetic Operators precedence: (), ^, - negation, * / , + - MATLAB Documentation MATLAB is composed from different toolboxes such as Database Toolbox, Computer Vision Toolbox, Image Processing, Communications System Toolbox, in addition to general MATLAB functions that is used across all MATLAB toolboxes. MATLAB is well-documented. Documentation of MATLAB can be accessed via different ways: o Online at http://www.mathworks.com/help/matlab/ o Using the help command line. % help rat o From MATLAB Desktop: Help >> Product Help.
MATLAB Functions These are covered:  Some Arithmetic Functions  Relational Functions  Logical Functions  Bitwise Functions  Data Types Functions Other Arithmetic Functions  abs(x)  power(x,y) === x^y  ceil(x) : round towards positive infinity  floor(x) : round towards negative infinity  fix(x) : round toward zero  round(x) : round to nearest integer  mod(x)  rem(x)  sign(x) Exponent and Logarithms  sqrt(x)  nthroot(x,n) => √ 𝑥 𝑛  exp(x) => 𝑒 𝑥  pow2(x) => 2 𝑥  log10(x) => log2(x)  log(x) => loge(x) Trigonometry functions with radian argument Radian sin asin cos acos tan atan sec asec … Degree sind asind cosd acosd tand atand Secd asecd … To convert an angle measurement from radian to degree: radtodeg(rad). To convert an angle measurement from degree to radian: degtorad (deg). Elementary Math Functions
 factorial(x)  factor(x): decompose the number to its prime factors  isprime(x)  primes(x): list of primes less than or equal to the number  gcd(x,y)  lcm(x,y)  rat(x): rational fraction approximation of the number  rats(x): rational approximation of the number. Default string length is 13.  rats(x, strlen): rational approximation of the number. Example: rat(pi), rats(pi), rats(pi, 7), rats(pi, 6/5/4/3/2), rats(pi, 20)
MATLAB Scripts It is nice here to give a summary of what we have previously discussed. MATLAB is a scientific tool that incorporates programming to perform several scientific operations. MATLAB desktop consists of four main windows. MATLAB has several data types and operators. The building block of MATLAB is its functions. Documentation can be accessed via different ways. Command Window can be used for simple calculations. It is difficult to create complex calculations in Command Window where there are many commands are to be entered. Limitations of Command Window:  It is used to enter command by command. If a program consists of 100 commands so we have to enter 100 lines in the command window one for each command, press enter to process the command and continue executing other commands.  If error occurred in a command, it is hard to manage it. Give an example of a program that consists of 3 lines to divide two numbers a=2; b=0; c = a / b;, and try to fix the error of dividing by zero to show how difficult it is to manage the error. Solution is to group these statements in a single file. Scripts are just containers to commands that accept all commands entered in the Command Window. MATLAB files are called scripts or M-files as they have .m extension. Scripts are edited in a new window called Editor Window. To open the Editor Window and create a MATLAB script:  From MATLAB desktop: File >> New >> Script  Using Command Line: edit The Editor Window has many menus and menu items similar to MATLAB Desktop. Write your MATLAB commands, save the file with a given name and make sure it has .m extension, then run it. Scripts have the same naming convention as variables. After saving the file it will appear under the current folder directory in the Current Folder Window. To execute a file, use the run MATLAB built-in function. It takes the complete/absolute path of the file to be executed. For example, if you create a file named test.m saved in this directory D:/programing/matlab, then it will be executed as follows: run('D:/programing/matlab/text.m') This command can be entered automatically by dragging and dropping the script into the MATLAB Command Window.
But it is tiresome to enter the absolute path of the file to be executed. Life can be easier by just entering the script name only to be executed in two ways: 1. Add the file to be executed under the current folder directory. 2. Add the path of the script to be executed in a MATLAB path. How MATLAB finds scripts to be executed? At first MATLAB searches its current directory and if the script file was not found then it will search for that file in its search paths. It will stop when finding the first file with the entered name. There are disadvantages and advantages of using current directory and also of using MATLAB search paths. When using MATLAB current directory to run a script found in PATH1 it is required to change the current directory of MATLAB to this path before running the file. When running another file in another directory PATH2 it is required to change the directory before running that file. So it is required to change the directory to match directory of each file before it is to be executed. This is tiresome. After changing the current directory to match the path of the file to be executed, just the file name is entered like test for test.m. The second option is to add the paths of the files you need to execute under MATLAB search paths. MATLAB can find the files if they were under one of its search paths. When entering the script name like test, MATLAB searches all of its search paths until finding the first file named test.m and execute it. Assume there are 100 search paths for MATLAB. So for MATLAB to find a specific file it needs to search an average of 50 paths before finding the file. This takes time to locate the file. So using current working directory has an advantage of being simple and fast but has a disadvantage running files in a single path only and it is required to change the path to match the path of the scripts to be executed. Using MATLAB search paths make life easier because you are not required to change the path to run the files but it takes much time to locate the file. For high-speed processors the time taken to locate the file under the MATLAB search paths can be trivial. So the different means to run a script in MATLAB are:  Manually entering the absolute file path in the run command.  Drag and drop the script in the Command Window.
 Change current directory to match the file directory and just enter the file name in the Command Window.  Add the file path in one of the MATLAB search paths and just enter the file name in the Command Window. All files to be executed by MATLAB must be under directory of current folder or one of MATLAB search paths to make MATLAB able to find the file. Example, running a file script1 allows MATLAB to search for the file, find it, and then execute it. Search is done in MATLAB search space that is can be current path at Current Folder Window or MATLAB paths. Running a Script  Pressing F5 in the script window.  Type its name without .m in the Command Window: scriptName.  Using Editor Window: Debug >> Run scriptName.m. But this assumes that you actually have the script opened and set to current script in Editor Window. If the script to be executed is not in the current folder, a window will appear that asks if to change the current folder to the folder containing the required script or to add the script path to MATLAB path. To display the contents of a script file without executing it, use the type command: type scriptPath with/without .m extension as default extension is .m. To open a file in the Editor Window for modifications:  Command Window: edit scriptPath with/without .m extension as default extension is .m. Again the file must be found in current folder or one of the MATLAB search paths.  In MATLAB desktop: File >> Open  If the script is under current folder directory, double-click it.
MATLAB Comments To add a comment to a script line:  Add % before the line. Comments can be used in Command Window.  Right-click a line and select Comment option (CTRL+R). To remove a comment:  Just delete the %.  Right-click a line and select Uncomment option (CTRL+T). Note that creating or opening a script can be done from MATLAB Desktop or Editor Window.
MATLAB Control Structures Control structures in MATLAB have a different syntax compared to Java and C++ and other types of languages. Statements can be enclosed inside another like if or for in different ways:  Using curly braces {} like Java and C++  Using keywords like end in MATLAB  Using indentation like Python At first a common way to write for or if statements is to group all of their statements inside two curly braces. But in MATLAB all statements that belong to a control structure will be enclosed between the statement itself and the end keyword without using curly braces. Selection Structures  If o If o If-else o If-elseif o If-elseif-else o If-elseif-elseif-…-else  switch if x=2; if(x < 10) disp('x < 10'); elseif(x < 20) disp('10 < x < 20'); else disp('x > 20'); end switch x=2; switch(x) case 1 disp('x is 1'); break;
case 2 disp('x is 2'); break; case 3 disp('x is 3'); break; otherwise disp('No match'); end Repetition Structures  for  while for Normal for loop in Java and C++ has three parts: 1. Loop variable with initial value 2. Condition 3. Increment or decrement But in MATLAB there is a bit change. for loop in MATLAB has: 1. Loop variable with initial value 2. Maximum or minimum value 3. Increment or decrement for loop in MATLAB has this format: for loopVar=initialVal:inc-dec:lastVal %Loop body end By default there is automatic increment by 1 after each loop. So k=1:5 is identical to k=1:1:5. for k=1:1:5 disp('Message'); end
The advantage of for loop is that all of its requirements are grouped in a single statement. Just one statement will contain:  loop variable  initial value  condition  maximum or minimum value  increment and decrement after each loop. But in while loop these parts are spread. while k=1; while(k<5) disp('Message'); k = k + 1; end In Java we can create infinite loop using both for and while loops. But in MATLAB we can`t create an infinite loop using for.
Everything in MATLAB is a matrix Remember that MATLAB stands for MATrices LABoratory and thus the data that it works on is matrix. Every variable created in MATLAB is a matrix even if it consists of just a single value. Examples: a = 5; is equivalent to creating a matrix with just a single element. Introducing Array Editor Window To edit an existing variable you can use the Array Editor window. The Array Editor window can be accessed in two ways: 1. Double click the variable in the Workspace window. 2. Use the openvar command that accepts the variable name as a string. e.g. openvar('test') Example: 1. Open the previously created variable a in the Array Editor Window. 2. At first add additional elements in the same row without leaving empty cells. 3. Then add elements in a second row without leaving empty cells. 4. Finally add a single element in a third row without filling all the cells and illustrate the zeros that are added automatically. The Array Editor window will have a form similar to MS Excel that consists of cells. The variable data will be in a matrix form even if the variable contains just a single value. The variable can be edited by adding or removing additional cells of data. Sharing Data between MATLAB & MS Excel You can copy and paste data from the Array Editor to Excel and vice versa. MATLAB array types MATLAB has three types of arrays: 1. Arrays 2. Cell arrays 3. Structure arrays This course will focus on the first array type which is the normal and known type of arrays.
Creating a vector Before creating an array or a matrix let us create what is simpler than a matrix which is a vector. The vector is the building block of arrays and matrices. A vector is just a single row or column from a matrix. A vector is created by using two square brackets []. Elements within the square brackets will be separated by spaces, commas, or semicolons. Spaces and commas just separate the elements but they still within the same row. Semicolons make elements before and after it in subsequent rows. So to create a row vector, just separate the elements using spaces or commas. To create a column vector use semicolons. Examples:  Create a row vector: [1,2,3,4,5] or [1,2 3 4, 5]  Create a column vector: [1;2;3;4;5] View the created array in the Array Editor window. A common function to create a linearly spaced vector of subsequent values is linspace. Function declaration: linspace(x1, x2, n) It returns a vector of n elements starting from x1 and not exceeding x2. The function is linear and linear means that data can be represented by a line and lines change by a fixed amount. So to reach x2 from x1 the line will change by a fixed amount. To understand this function you should know the following: 1. What is linear? 2. How to find the amount of change to reach x2 from x1? Example to understand what is linear: The sequence 1, 3, 5, 7, 9 is a linear sequence because change occurs by a fixed amount as each time 2 is added. The proof that this sequence is linear is that we can graph it as a line. But this sequence 1, 3, 5, 10, 12, 15 is non-linear because change occurs by a non-fixed amount. Sometimes change occurs by 2 and another by 5 and another by 3. The proof that this sequence is non-linear is that we can`t graph it as a line but as a polyline.
Example to understand how to find the amount of change to reach x2 from x1: If you need to return 5 numbers in the range from 0 to 20 it is required to divide the range between 0 and 20 into 5 parts. Remember that the function is linear and linear means that change happens by a fixed amount. So the amount of change from the first number to the second one will be equal to the amount between second and third numbers and so on. The rule to find spacing between elements or the amount of change is: (x2-x1)/(n-1) It is (n-1) not n because we need number of parts returned and not number of numbers. 1---2---3---4---5 Here number of parts is 4 but number of numbers if 5. More explanation: If you need to return 5 numbers in the range 0:20 then you should think that to return the 5 numbers you need to divide the range into a number of parts. The number of parts to return is always less than the number of numbers by 1. So to return 5 numbers you divide the range into 4 parts. Plotting sine wave: arr = linspace(0, 20, 200); result = sin(arr); plot(arr, result); Indexing a vector MATLAB indexing starts from 1 not 0. A vector is indexed using the parentheses (). Indexing can return: 1. Single value 2. Multiple values Single Value Indexing That is to specify the exact location of a single element to return. That is to specify the element location in the row or column vector. Example: v = [1 2 3 4]; v(2); Multiple Values Indexing Rather than specifying the index of a single element, a range of indices is to be specified.
To specify a range of indices, use the colon operator of this form start:change:last. Where start is the starting index, last is the last index and change is the change that happens to start to reach last. Assume that you need to return the vector elements from the first element to the third element. So the start index is 1, amount of change to make each time is 1 and finally thr last index to return is 3. So the format used is v(1:1:3). But v(1:3) also returns the same results as v(1:1:3). This indicates that change is by default equal to 1. Assume that you need to return elements starting from the second element to the fifth one: v(2:1:5) or v(2:5). What to do to return the even indexed elements in the vector? That is to start at index 2 and then return indices 4, 6, 8 and so on. The idea is to make the change equal to 2 each time. V(2:2:8). How to return the odd indexed elements? v(1:2:7) What about v(3:1)? This is invalid line and has logical error because it is impossible to reach the last index. The change that occur to the first index (3) will not make it reach the last index (1) because 3 is incremented by 1 each time and thus can`t reach the index 1. Creating a matrix A matrix is a collection of vectors concatenated to each other. To create a matrix in MATLAB, use semicolons to separate vectors in different rows. Example: mat = [1 2 3;4 5 6;7 8 9]; Indexing a matrix A vectors was just has a single dimension (row or column) and thus a single index is expected to return a value from a vector. But a matrix contains two dimensions (row and column) so it needs two indices to return a single value. One index for row and another for column. Single Value Indexing Example: mat(1,3) this returns the matrix element at row 1 and column 3.
Multiple Values Indexing 1. Single row, multiple columns 2. Multiple rows, single columns 3. Multiple rows, multiple columns It is also possible to return multiple values from a matrix using the colon notation. The colon notation used for a matrix with two dimensions is as follows: mat(start:change:last, start:change:last) The first colon notation selects the rows and second one selects the columns. Example: mat(1:3, 2:4) this command selects the rows 1, 2 and 3 and returns the second, third, and fourth elements within these rows.
Figures and Plots figure To create a window and print graphs on it you need to use the figure command. This command creates a new figure which is built-in to MATLAB and it is possible to draw on that figure. After opening the window we can draw on it. There are many ways to draw on the figure like:  line: creates a line  rectangle  imshow: prints an image on the figure  plotting functions o plot: Normal plot o stem: Discrete plot o scatter: Just draws circles at locations specified by the inputs x and y without connecting them. It is also known as bubble plot. o stairs: o bar: plot In MATLAB it is very common to have multiple versions of the same function and you select the version that is appropriate to your application. A common version of the plot function accepts two inputs: 1. x 2. y It has the form plot(x, y). Simple plot example: If there is a function of that form: y = f(x) = x + 2 It is possible to have multiple values for x and find the y of each input. If input is 1, 2, 3, 4 thus output will be 3, 4, 5, 6. We can draw this function using the plot command. So the complete commands to be used are:
x = [1 2 3 4]; y = x + 2; figure plot(x,y) Relationship between plot and figure It is not required to enter the figure command. By default when the plot command get executed it opens a new figure if no existing figure is actually opened. When just a single plot is to be created the figure command can be ignored. But ignoring the figure command when multiple plots are to be created may lead sometimes to problems. Multiple plots commands but ignoring the figure command For example: Suppose that there are two functions to draw. If the figure command was ignored then when entering the first plot command a new figure will be opened and the plot will appear on it. When the second plot command gets entered it will replace the plot on the active figure. x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; plot(x,y1) plot(x,y2) The solution is to open a new figure for each new plot. x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure plot(x,y1) figure plot(x,y2) For the first plot, it will search for an existing figure and it will find the figure that was just created using the figure command. For the second plot, it will search for an existing figure to use. It will find two figures that were created by the two figure commands. Which one it will be used? The answer is that the latest active figure is the one to be used.
Later you will know how to select a specific figure to plot on. Multiple plots on the same figure Opening a new figure for each new plot may create a large number of figures. One figure may hold multiple plots. This can occur in three ways:  Using the plot command: single figure, multiple plot  Using the hold on and hold off commands: single figure, multiple plot  Using subplot: single figure, multiple plot Using the plot command: single figure, multiple plot Another version of the plot function may accepts multiple x and multiple y plot(x1, y1, x2, y2, x3, y3, …) For example: x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; plot(x,y1, x,y2) The advantage of this option is that it differentiates among the different functions plotted by giving each one a different color. Using the hold on and hold off commands: single figure, multiple plot The second way is to use the hold on and hold off commands. These commands are used if you are creating a single plot but this plot is created using multiple plot commands. If there are multiple plots created on one figure the last plot will override all the previous plots. But when entering the hold on command MATLAB knows that the subsequent plots will be drawn on the same figure. So hold on tells MATLAB to continue drawing on the same figure. x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure plot(x,y1) hold on plot(x,y2)
This option assumes that you create a single plot and continue creating the plot. So for the different plots created MATLAB does not differentiate among them and not give each plot a different color. All plots will appear with the same color as if they were of the same plot. But if you are to create 3 plots and want 2 of them to appear on the same figure and another one to appear on another figure then you can make the first plot, use the hold on command that tells MATLAB to continue drawing on the same figure and enter the second plot. Then to tell MATLAB not to use that figure to draw next plots on it use the hold off command. The hold off command tells MATLAB to open a new figure to draw. Explain why the plot(x,x) overrides the previous plot: x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure plot(x,y1) hold on plot(x,y2) hold off plot(x,x) Using subplot: single figure, multiple plot It is possible to divide the figure into multiple cells and make plots in these cells. For example: x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure subplot(1,2,1) plot(x, y1) subplot(1,2,2) plot(x, y2) Graph Axis Limits What limits are used by MATLAB for axis?
MATLAB automatically selects the axis limits from the data. Example: x = [1 4 8 10 13]; y = x + 3; plot(x,y) MATLAB knows that x-axis starts from 1 to 13 so it will set the limits of the x-axis to 1 and 13. It also knows that the minimum y-value will be 4 and the maximum is 16 so it will set the y-axis limits to 4 and 16. MATLAB uses the axis command to change the axis limits. It has the following form: axis([xmin, xmax, ymin, ymax]) To allow MATLAB to automatically chooses the minimum limits use –inf and for maximum limits to inf. xlim([xmin, xmax]) and ylim([ymin, ymax]) produces the same results as axis([xmin, xmax, ymin, ymax]) Other Useful Functions:  disp  fprintf  input  pause  waitforbuttonpress  exit  quit  clf

Introduction to MATrices LABoratory (MATLAB) as Part of Digital Signal Processing Course

  • 1.
    Introduction to MATricesLABolatory (MATLAB) as Part of Digital Signal Processing Course By Ahmed Fawzy Gad Faculty of Computers and Information (FCI) Menoufia University Egypt ahmed.fawzy@ci.menofia.edu.eg ‫المنوفية‬ ‫جامعة‬ ‫والمعلومات‬ ‫الحاسبات‬ ‫كلية‬ ‫قسم‬‫المعلومات‬ ‫تكنولوجيا‬ ‫الرقمية‬ ‫اإلشارات‬ ‫معالجة‬ MENOUFIA UNIVERSITY FACULTY OF COMPUTERS AND INFORMATION INFORMATION TECHNOLOGY DEPARTMENT DIGITAL SIGNAL PROCESSING ‫المنوفية‬ ‫جامعة‬
  • 2.
    MATLAB Course Syllabus oMATLAB Installation o MATLAB Packages  Definition  How to use a toolbox? (Java vs. MATLAB)  Examples of general and specific toolboxes o MATLAB Versions and Releases o What is MATLAB? o Overview about MATLAB Desktop o Windows and Layout o Command Window  MATLAB Modes (Interactive & Scripting)  How Command Window interactive mode works (REPL)  Example 2+3  Statement separator and terminator (, and ;)  Example 1+1;2+3,5-3  ans variable  Multiple Commands at the Same Line (Comma ,)  Multiple-Lines Commands - Line Continuation (Ellipses …)  Clearing Command Window (clc) o Command History Window  Definition (stack)  Navigating between commands  Other ways to restoring and modifying commands (drag&drop/copy&paste)  Deleting Commands (single, multiple, all) o Workspace Window  Clearing Variables o Current Folder Window o Other Windows  Editor Window
  • 3.
    o MATLAB Variables oNaming Convention o Checking variable name length and validity o MATLAB Keywords  Difference between keyword and reserved variable  Avoiding confliction with these variables o Commands related to variables o Variable Data Types o Signed and unsigned types o Type Casting o Command Window Numeric Display Formats o MATLAB Operators and Corresponding Functions o Arithmetic Operators o Relational Operators o Logical/Elementwise Operators o Bitwise Operators o Assignment Operators o Set Operators o Operators Precedence o MATLAB Documentation o Different ways to access MATLAB documentation o Frequent Mathematical Functions o Arithmetic Functions o Exponential and Logarithmic Functions o Trigonometry Functions o Scripting o Limitations of Command Window o Opening the Editor Window (MATLAB Desktop & edit) o Creating a new script o Running a script using absolute path (run) o Running a script in the current folder using name only o How MATLAB finds scripts?  Current Folder
  • 4.
     MATLAB SearchPaths o Summary of the different ways to run a script o Scripts vs. Functions o MATLAB Comments o Matrices and vectors o Everything in MATLAB is a matrix o Introducing Array Editor Window  Example to edit a variable  Sharing data between MATLAB and MS Excel o MATLAB array types o Matrices and Arrays  Creating a vector (single row matrix)  Indexing a vector  Single value indexing  Multiple values indexing o Example: Even indexed elements o Example: Odd indexed elements  Creating a matrix (multi-row matrix)  Indexing a matrix  Single value indexing  Multiple values indexing o Single row, multiple columns o Multiple rows, single columns o Multiple rows, multiple columns o MATLAB Control Structures o Selection Structures  if  if  if-else  if-elseif  if-elseif-else  if-elseif-elseif-…-else
  • 5.
     switch o RepetitionStructures  for  while o Figures and Plots o figure o plot  Common plot version plot(x,y)  Simple plot example  Relationship between plot and figure  Multiple plots commands but ignoring the figure command  Multiple plots on the same figure  Using the plot command: single figure, multiple plot  Using the hold on and hold off commands: single figure, multiple plot  Using subplot command: single figure, multiple plot o title o xlabel o ylabel o linspace o axis o xlim o ylim o Other plotting functions  stem  stairs  bar  scatter
  • 7.
    MATLAB Installation MATLAB Packages Definition: MATLABconsists of a set of toolboxes and each toolbox contains a set of pre-defined functions that actually implements a commonly used code by programmers. For example, programmers may need to calculate mean for a set of numerical values. MATLAB actually implements a mean function packaged in a toolbox that can be used easily by programmers. How to use? For a programming language like Java, it consists of a set of classes in a package and multiple packages can be found in a single project. To be able to use a class within a specific package you need to import that package which appears tiresome. But MATLAB makes things easier and not requires you to import the toolbox when using it from your code. What is required is to install that toolbox. When installing MATLAB, you have the option to select the toolboxes to be installed. There are multiple toolboxes to install and toolboxes selection depends on your purpose. Examples of general and specific toolboxes: The most common general toolboxes that can be used in a wide range of applications are such as:  Signal Processing Toolbox  Statistics and Machine Learning Toolbox Other useful toolboxes specific to the application of image analysis are like:  Image Acquisition Toolbox  Image Processing Toolbox  Computer Vision System Toolbox
  • 8.
    Before being askedto create work by your hands it is required to understand the tools you will use to create that work. So next is to understand MATLAB well before being asked to create MATLAB scripts your own. MATLAB Versions and Releases The first step in learning most of the programming tools is to understand its history. The history will help you have a good background about that tool and give you better understanding about its capabilities. For example, if you are asked to create an Android application the first step is to know which version of Android the application targets. Android has different versions from Android 1.6 Donut to Android 6.0 Marshmallow and each one may have some differences from the other versions. Knowing which version you target will help you decide which functions this version provides and you can use to build the application. MATLAB has a strong history as its first version MATLAB 1.0 was published in 1983. MATLAB is continuing in its race and now in 2016 its 9.1 version was released. MATLAB has a new version every year. Each version of MATLAB has two releases marked either as a and b. For example, in 2013 MATLAB has two releases, one in the beginning of the year and marked as a and another at the end of the year marked as b. The release is written in this format: YearRelease. For example, 2013a, 2013b, 2014a, 2014b, 2015a, 2015b. It is important to know which version and release of MATLAB you use because a common error that occurs is using a function that is not supported by your installed version of MATLAB. For example, if MATLAB 2010b was installed and you tried to use a function provided by MATLAB 2012a, you will get an error. So it is important to check whether the function is provided by the installed version or not. Example is the timezones function that is supported in MATLAB 2015b https://www.mathworks.com/help/matlab/ref/timezones.html. What is MATLAB? MATLAB is short for MATrices LABoratory. We can`t say that MATLAB is a computer language and also can`t say it is just a software. MATLAB is not just software because if it was just a software so what is the explanation that there is some programming within it?
  • 9.
    Also it isnot just a language because if so, what is the explanation about the tools found in the program interface? A better definition for MATLAB: MATLAB is short for matrices laboratory which is software that provides an environment to analyze data and perform scientific operations in addition to incorporating programming. MATLAB allows some functions to be performed using GUI without knowledge about programming at all but also it provides means of programming allowing users to create their custom applications. Some features can be accessed from both the MATLAB interface and programming. Programming is a good way to do the job because it allows users to create their own customized applications that can intelligently fit their purpose rather than depending on the provided features from MATLAB. These features may be limited to a specific task and may not completely fit the requirement of the user so some users prefer to create their own applications from scratch. Example of features provided from both interface and programming:  Neural Networks (NNs) can be created from MATLAB interface and also using code.  Video frames can be displayed using MATLAB built-in program accessed from interface and also can be displayed using code. But the MATLAB interface way to capture frames has limitations because it is difficult to customize this interface to fit your needs like specifying the frame size, bit depth, frame rate, and other parameters. Using programming, it can be easier to customize the application parameters to fit your needs. In conclusion, features provided by MATLAB interface can be used for testing and on- the-fly operations but programming is the better option to use to create your own custom application because it provides better control.
  • 10.
    MATLAB Windows MATLAB mainlyconsists of 4 main menus that appear in the interface: 1. Command Window 2. Command History 3. Workspace 4. Current Folder window These windows can be placed in different layouts that can be changed from MATLAB as follows: Desktop >> Desktop Layout Then choose the appropriate layout. You can close, lock, unlock, minimize or maximize any of these windows. There are other windows like:  Script Editor Window  Array Editor Window Command Window MATBAB commands can be executed in two modes like Python: 1. Interactive Mode 2. Scripting Mode Interactive Mode Interactive mode is via the MATLAB desktop Command Window. In the interactive mode, commands are entered in the Command Window command by command in a style called Read Evaluate Print Loop (REPL). When one command is entered by pressing enter, it will be read by MATLAB Command Window then get evaluated or executed. The command may generate result and it will be printed. Finally the console will loop again the read state and be ready to accept new commands. Command Window has a number of properties: Single-Line Commands Command window is the main window used to enter commands regularly as single-line commands next to the command prompt >>. To execute a command in the Command window, write the command then press enter to allow MATLAB to execute the command. >> 2+3
  • 11.
    Some commands willreturn result. If the command has no variable to store its results, the default variable called ans is used. Command window is not a text file as you are limited only to enter commands at the current command prompt location and can`t go back and modify a command that actually shown in the command window. Ending statement by a semicolon When no semicolon ; used after the command, its result is shown in the Command Window after pressing enter. Note that semicolon not prevents results from returning into the variables but prevents results from appearing in the Command Window. If a command ended with a semicolon, its results are omitted from appearing in the Command window. In this case to print the variable value, use a function like disp() that accepts only a string. Multiple commands in the same line Multiple commands can appear at the same line by separating them by comma or semicolon. Note that semicolon is used to not print results of its statement. So semicolon is regarded statement terminator an also terminator but comma is just a statement separator. Multiple-Lines Commands (Line Continuation …) If the command was very long to appear in a single line, it can be extended to a second line using ellipsis … . Example: >> 2+ … >> 3 Spaces do not affect commands so a=5; is similar to a = 5; There are a set of commands related to the Command Window like:  clc Command History Commands are saved into a stack in the Command History window. Commands are stored across sessions. So restarting MATLAB will not destroy the saved variables and only destroyed if cleared manually. Navigating between commands
  • 12.
    We can navigatethrough commands entered previously using the up and down arrow keys in the Command Window to avoid retyping the same commands and also you can modify them. Other ways to reenter and modify previously entered commands By double clicking a command in the Command History window, it will be entered automatically in the Command window as if it was written and then executed without any modifications. To modify it before execution, drag and drop or copy and paste the command, make the required changes then press enter to execute it. Delete Command History Window Commands Commands stored in the Command History Window can be deleted individually or as groups or even completely deleted:  Delete a single command: select it and press delete or right click the command and select the "Delete Selection" option.  Delete multiple commands: select commands to be deleted and press delete or right click any of them and select "Delete Selection" option.  Delete all commands: right click any of the commands in the Command History Window and choose the last option "Clear Command History". Workspace Window Result of a command if any is stored into a memory variable that will appear in the Workspace window. If the command was anonymous and not assigned to a variable, its results will be stored in the ans variable. Variables can be cleared using the clear command:  Clear a single variable: clear x  Clear multiple variables: clear x y z …  Clear all variables: clear all As a summary for the first three windows, commands are entered and executed in the Command window. Commands entered are stored in a stack in the Command History window. If the commands return a result, it will be stored in variables in memory and appear in the Workspace windows.
  • 13.
    Current Folder All pathsare relative to the current folder. It is used to show and modify the MATLAB current folder directory. For each window, there is a corresponding command to set focus to that window: commandwindow, commandhistory, and workspace.
  • 14.
    MATLAB Variables Naming Convention MATLABvariables can use any combinations of a-z characters either small or capital and numbers 0-9 in addition to underscore _. They can`t start with a number or underscore. If a variable name consists of more than one word, you can combine them using underscores or in a more recommended fashion by capitalizing the very first character of words other than first. So instead of test_result use testResult. Variable names has a maximum length equals to the value returned by namelengthmax command that is relative to the system. Names larger than namelengthmax will be truncated to namelengthmax. To check if a string can be a valid variable name: isvarname(‘var’). It returns 1 for valid variable names and 0 for invalid variable names. MATLAB variables are case sensitive so variable var is different from Var. There are a set of commands that are related to variables: who, whos, clear/clear all, clear var1, clear var1, var2, …, exist. Variable names can`t be one of the reserved or key words in MATLAB such as a built-in function mean. Difference between keyword and reserved word: Keyword is a word that has special meaning in the language. Reserved word is a word that is reserved by the language and can`t be used by the programmer as a variable name. Question: if, for and while are keywords or reserved words? Answer: They are both keywords and reserved words. They are keywords because they have special meaning in the language. They are reserved words because they can`t be used as variable names. In general, to check if a word is reserved word, try to use it as a variable name. If the name was valid then it is not a reserved word. There are a number of MATLAB built-in variables. Some of them have a constant value and others can change value based on machine.  pi: The mathematical constant 𝜋.
  • 15.
     i &j: Imaginary number which is the square root of -1 or √−1.  Inf or inf: Arithmetic representation of positive infinity floating-point values that result from operations such as division by zero or overflow.  NaN or nan: Not a number to indicate values that can`t be real or complex such as 0/0 or Inf/Inf or any operation involving NaN.  eps: The machine epsilon is the minimum distance between two floating-point variables that MATLAB can recognize. If the difference between two variables is less than epsilon of the machine, MATLAB will say that they are equal and difference between them is 0. Example: a=1; b=1+eps; % b-a is eps. b=1+eps/2; %b-a is 0 because difference between the variables is less than epsilon.  realmax: Largest floating-point number in MATLAB. Overflow occurs if a number is larger than this number and will be clipped to realmax. Some cases where number is very larger than realmax the result is Inf rather than just overflow and clipping.  realmin: Smallest floating-point number in MATLAB. Similar to realmax as underflow occur if a number is less than it and if the number was very smaller than it, results is 0.  intmax & intmin: Maximum and minimum integer values. They default to int32. To find maximum/minimum for other integer types, specify them as follows intmin/intmax(‘int8’).  pwd: Contains MATLAB current folder. pwd stands for Print Working Directory.  cd: Change MATLAB current folder. Example cd(‘C:/test’). cd stands for Current Directory.  dir: Returns a list of folder contents.  date: current date Note that all of these variables can have their value changed so be careful. This is because one can assume that i=j= √−1. But the user may by mistake create a variable named i or j. So if the user set i=5; then the old value will be overwritten and lead to logical errors.
  • 16.
    MATLAB Data Types Don`tthink that because MATLAB does not declare the variable type when the variable is created that no data types exist for MATLAB. Data types actually exist. Some programming languages like Java and C++ require variable type to be declared explicitly by the programmer. MATLAB knows variable type implicitly from the assigned data. There are a number of built-in data types for MATLAB variables. Each variable has a type and a range that specify its characteristics in addition to a set of manipulators to perform operations over that type. The type and operations are called classes. Primitive data types in MATLAB including:  Integer: int8/uint8, int16/uint16, int32/uint32, int64/uint64  Floating-point: single, double % Any number is double by default.  Character: char  Logical: logical Date Type Casting There is a function with the same name as each type to convert data to that type. Example, int8(5.4) Change Command Window numeric display format By default, MATLAB Command Window displays numeric results as short with 4 decimal places. To change this default format: File >> Preferences >> Command Window >> Text Display >> Numeric Format & Numeric Display. Numeric formats available are such as short (default) 4 digits, long (15 digits), + (+/- /blank for positive/negative/zeros results, bank (currency format with 2 digits), hex, ratio. Also numeric display or line spacing can be changed between loose and compact formats. These formats can be changed programmatically using the format function as follows: format short % numeric format format compact % numeric display Programmatically just changes the format for a single MATLAB session. To maintain the effect for future sessions, use MATLAB preferences.
  • 17.
    Operators and OperatorsPrecedence rules Operators can be unary, binary or both.  Arithmetic Operators : + plus, - minus, * mtimes, .* times, / mdivide, ./ divide, ^ mpower, .^ power, mod, rem, --, ++  Relational Operators : == eq, ~= ne, > gt, < lt, >= ge, <= le  Logical Operators : && and, || or, ~ not, xor  Bit-/element-wise Operators : & bitand, | bitor, bitcom, bitxor  Assignment Operators : =  Set Operators : intersect, union Arithmetic Operators precedence: (), ^, - negation, * / , + - MATLAB Documentation MATLAB is composed from different toolboxes such as Database Toolbox, Computer Vision Toolbox, Image Processing, Communications System Toolbox, in addition to general MATLAB functions that is used across all MATLAB toolboxes. MATLAB is well-documented. Documentation of MATLAB can be accessed via different ways: o Online at http://www.mathworks.com/help/matlab/ o Using the help command line. % help rat o From MATLAB Desktop: Help >> Product Help.
  • 18.
    MATLAB Functions These arecovered:  Some Arithmetic Functions  Relational Functions  Logical Functions  Bitwise Functions  Data Types Functions Other Arithmetic Functions  abs(x)  power(x,y) === x^y  ceil(x) : round towards positive infinity  floor(x) : round towards negative infinity  fix(x) : round toward zero  round(x) : round to nearest integer  mod(x)  rem(x)  sign(x) Exponent and Logarithms  sqrt(x)  nthroot(x,n) => √ 𝑥 𝑛  exp(x) => 𝑒 𝑥  pow2(x) => 2 𝑥  log10(x) => log2(x)  log(x) => loge(x) Trigonometry functions with radian argument Radian sin asin cos acos tan atan sec asec … Degree sind asind cosd acosd tand atand Secd asecd … To convert an angle measurement from radian to degree: radtodeg(rad). To convert an angle measurement from degree to radian: degtorad (deg). Elementary Math Functions
  • 19.
     factorial(x)  factor(x):decompose the number to its prime factors  isprime(x)  primes(x): list of primes less than or equal to the number  gcd(x,y)  lcm(x,y)  rat(x): rational fraction approximation of the number  rats(x): rational approximation of the number. Default string length is 13.  rats(x, strlen): rational approximation of the number. Example: rat(pi), rats(pi), rats(pi, 7), rats(pi, 6/5/4/3/2), rats(pi, 20)
  • 20.
    MATLAB Scripts It isnice here to give a summary of what we have previously discussed. MATLAB is a scientific tool that incorporates programming to perform several scientific operations. MATLAB desktop consists of four main windows. MATLAB has several data types and operators. The building block of MATLAB is its functions. Documentation can be accessed via different ways. Command Window can be used for simple calculations. It is difficult to create complex calculations in Command Window where there are many commands are to be entered. Limitations of Command Window:  It is used to enter command by command. If a program consists of 100 commands so we have to enter 100 lines in the command window one for each command, press enter to process the command and continue executing other commands.  If error occurred in a command, it is hard to manage it. Give an example of a program that consists of 3 lines to divide two numbers a=2; b=0; c = a / b;, and try to fix the error of dividing by zero to show how difficult it is to manage the error. Solution is to group these statements in a single file. Scripts are just containers to commands that accept all commands entered in the Command Window. MATLAB files are called scripts or M-files as they have .m extension. Scripts are edited in a new window called Editor Window. To open the Editor Window and create a MATLAB script:  From MATLAB desktop: File >> New >> Script  Using Command Line: edit The Editor Window has many menus and menu items similar to MATLAB Desktop. Write your MATLAB commands, save the file with a given name and make sure it has .m extension, then run it. Scripts have the same naming convention as variables. After saving the file it will appear under the current folder directory in the Current Folder Window. To execute a file, use the run MATLAB built-in function. It takes the complete/absolute path of the file to be executed. For example, if you create a file named test.m saved in this directory D:/programing/matlab, then it will be executed as follows: run('D:/programing/matlab/text.m') This command can be entered automatically by dragging and dropping the script into the MATLAB Command Window.
  • 21.
    But it istiresome to enter the absolute path of the file to be executed. Life can be easier by just entering the script name only to be executed in two ways: 1. Add the file to be executed under the current folder directory. 2. Add the path of the script to be executed in a MATLAB path. How MATLAB finds scripts to be executed? At first MATLAB searches its current directory and if the script file was not found then it will search for that file in its search paths. It will stop when finding the first file with the entered name. There are disadvantages and advantages of using current directory and also of using MATLAB search paths. When using MATLAB current directory to run a script found in PATH1 it is required to change the current directory of MATLAB to this path before running the file. When running another file in another directory PATH2 it is required to change the directory before running that file. So it is required to change the directory to match directory of each file before it is to be executed. This is tiresome. After changing the current directory to match the path of the file to be executed, just the file name is entered like test for test.m. The second option is to add the paths of the files you need to execute under MATLAB search paths. MATLAB can find the files if they were under one of its search paths. When entering the script name like test, MATLAB searches all of its search paths until finding the first file named test.m and execute it. Assume there are 100 search paths for MATLAB. So for MATLAB to find a specific file it needs to search an average of 50 paths before finding the file. This takes time to locate the file. So using current working directory has an advantage of being simple and fast but has a disadvantage running files in a single path only and it is required to change the path to match the path of the scripts to be executed. Using MATLAB search paths make life easier because you are not required to change the path to run the files but it takes much time to locate the file. For high-speed processors the time taken to locate the file under the MATLAB search paths can be trivial. So the different means to run a script in MATLAB are:  Manually entering the absolute file path in the run command.  Drag and drop the script in the Command Window.
  • 22.
     Change currentdirectory to match the file directory and just enter the file name in the Command Window.  Add the file path in one of the MATLAB search paths and just enter the file name in the Command Window. All files to be executed by MATLAB must be under directory of current folder or one of MATLAB search paths to make MATLAB able to find the file. Example, running a file script1 allows MATLAB to search for the file, find it, and then execute it. Search is done in MATLAB search space that is can be current path at Current Folder Window or MATLAB paths. Running a Script  Pressing F5 in the script window.  Type its name without .m in the Command Window: scriptName.  Using Editor Window: Debug >> Run scriptName.m. But this assumes that you actually have the script opened and set to current script in Editor Window. If the script to be executed is not in the current folder, a window will appear that asks if to change the current folder to the folder containing the required script or to add the script path to MATLAB path. To display the contents of a script file without executing it, use the type command: type scriptPath with/without .m extension as default extension is .m. To open a file in the Editor Window for modifications:  Command Window: edit scriptPath with/without .m extension as default extension is .m. Again the file must be found in current folder or one of the MATLAB search paths.  In MATLAB desktop: File >> Open  If the script is under current folder directory, double-click it.
  • 23.
    MATLAB Comments To adda comment to a script line:  Add % before the line. Comments can be used in Command Window.  Right-click a line and select Comment option (CTRL+R). To remove a comment:  Just delete the %.  Right-click a line and select Uncomment option (CTRL+T). Note that creating or opening a script can be done from MATLAB Desktop or Editor Window.
  • 24.
    MATLAB Control Structures Controlstructures in MATLAB have a different syntax compared to Java and C++ and other types of languages. Statements can be enclosed inside another like if or for in different ways:  Using curly braces {} like Java and C++  Using keywords like end in MATLAB  Using indentation like Python At first a common way to write for or if statements is to group all of their statements inside two curly braces. But in MATLAB all statements that belong to a control structure will be enclosed between the statement itself and the end keyword without using curly braces. Selection Structures  If o If o If-else o If-elseif o If-elseif-else o If-elseif-elseif-…-else  switch if x=2; if(x < 10) disp('x < 10'); elseif(x < 20) disp('10 < x < 20'); else disp('x > 20'); end switch x=2; switch(x) case 1 disp('x is 1'); break;
  • 25.
    case 2 disp('x is2'); break; case 3 disp('x is 3'); break; otherwise disp('No match'); end Repetition Structures  for  while for Normal for loop in Java and C++ has three parts: 1. Loop variable with initial value 2. Condition 3. Increment or decrement But in MATLAB there is a bit change. for loop in MATLAB has: 1. Loop variable with initial value 2. Maximum or minimum value 3. Increment or decrement for loop in MATLAB has this format: for loopVar=initialVal:inc-dec:lastVal %Loop body end By default there is automatic increment by 1 after each loop. So k=1:5 is identical to k=1:1:5. for k=1:1:5 disp('Message'); end
  • 26.
    The advantage offor loop is that all of its requirements are grouped in a single statement. Just one statement will contain:  loop variable  initial value  condition  maximum or minimum value  increment and decrement after each loop. But in while loop these parts are spread. while k=1; while(k<5) disp('Message'); k = k + 1; end In Java we can create infinite loop using both for and while loops. But in MATLAB we can`t create an infinite loop using for.
  • 27.
    Everything in MATLABis a matrix Remember that MATLAB stands for MATrices LABoratory and thus the data that it works on is matrix. Every variable created in MATLAB is a matrix even if it consists of just a single value. Examples: a = 5; is equivalent to creating a matrix with just a single element. Introducing Array Editor Window To edit an existing variable you can use the Array Editor window. The Array Editor window can be accessed in two ways: 1. Double click the variable in the Workspace window. 2. Use the openvar command that accepts the variable name as a string. e.g. openvar('test') Example: 1. Open the previously created variable a in the Array Editor Window. 2. At first add additional elements in the same row without leaving empty cells. 3. Then add elements in a second row without leaving empty cells. 4. Finally add a single element in a third row without filling all the cells and illustrate the zeros that are added automatically. The Array Editor window will have a form similar to MS Excel that consists of cells. The variable data will be in a matrix form even if the variable contains just a single value. The variable can be edited by adding or removing additional cells of data. Sharing Data between MATLAB & MS Excel You can copy and paste data from the Array Editor to Excel and vice versa. MATLAB array types MATLAB has three types of arrays: 1. Arrays 2. Cell arrays 3. Structure arrays This course will focus on the first array type which is the normal and known type of arrays.
  • 28.
    Creating a vector Beforecreating an array or a matrix let us create what is simpler than a matrix which is a vector. The vector is the building block of arrays and matrices. A vector is just a single row or column from a matrix. A vector is created by using two square brackets []. Elements within the square brackets will be separated by spaces, commas, or semicolons. Spaces and commas just separate the elements but they still within the same row. Semicolons make elements before and after it in subsequent rows. So to create a row vector, just separate the elements using spaces or commas. To create a column vector use semicolons. Examples:  Create a row vector: [1,2,3,4,5] or [1,2 3 4, 5]  Create a column vector: [1;2;3;4;5] View the created array in the Array Editor window. A common function to create a linearly spaced vector of subsequent values is linspace. Function declaration: linspace(x1, x2, n) It returns a vector of n elements starting from x1 and not exceeding x2. The function is linear and linear means that data can be represented by a line and lines change by a fixed amount. So to reach x2 from x1 the line will change by a fixed amount. To understand this function you should know the following: 1. What is linear? 2. How to find the amount of change to reach x2 from x1? Example to understand what is linear: The sequence 1, 3, 5, 7, 9 is a linear sequence because change occurs by a fixed amount as each time 2 is added. The proof that this sequence is linear is that we can graph it as a line. But this sequence 1, 3, 5, 10, 12, 15 is non-linear because change occurs by a non-fixed amount. Sometimes change occurs by 2 and another by 5 and another by 3. The proof that this sequence is non-linear is that we can`t graph it as a line but as a polyline.
  • 29.
    Example to understandhow to find the amount of change to reach x2 from x1: If you need to return 5 numbers in the range from 0 to 20 it is required to divide the range between 0 and 20 into 5 parts. Remember that the function is linear and linear means that change happens by a fixed amount. So the amount of change from the first number to the second one will be equal to the amount between second and third numbers and so on. The rule to find spacing between elements or the amount of change is: (x2-x1)/(n-1) It is (n-1) not n because we need number of parts returned and not number of numbers. 1---2---3---4---5 Here number of parts is 4 but number of numbers if 5. More explanation: If you need to return 5 numbers in the range 0:20 then you should think that to return the 5 numbers you need to divide the range into a number of parts. The number of parts to return is always less than the number of numbers by 1. So to return 5 numbers you divide the range into 4 parts. Plotting sine wave: arr = linspace(0, 20, 200); result = sin(arr); plot(arr, result); Indexing a vector MATLAB indexing starts from 1 not 0. A vector is indexed using the parentheses (). Indexing can return: 1. Single value 2. Multiple values Single Value Indexing That is to specify the exact location of a single element to return. That is to specify the element location in the row or column vector. Example: v = [1 2 3 4]; v(2); Multiple Values Indexing Rather than specifying the index of a single element, a range of indices is to be specified.
  • 30.
    To specify arange of indices, use the colon operator of this form start:change:last. Where start is the starting index, last is the last index and change is the change that happens to start to reach last. Assume that you need to return the vector elements from the first element to the third element. So the start index is 1, amount of change to make each time is 1 and finally thr last index to return is 3. So the format used is v(1:1:3). But v(1:3) also returns the same results as v(1:1:3). This indicates that change is by default equal to 1. Assume that you need to return elements starting from the second element to the fifth one: v(2:1:5) or v(2:5). What to do to return the even indexed elements in the vector? That is to start at index 2 and then return indices 4, 6, 8 and so on. The idea is to make the change equal to 2 each time. V(2:2:8). How to return the odd indexed elements? v(1:2:7) What about v(3:1)? This is invalid line and has logical error because it is impossible to reach the last index. The change that occur to the first index (3) will not make it reach the last index (1) because 3 is incremented by 1 each time and thus can`t reach the index 1. Creating a matrix A matrix is a collection of vectors concatenated to each other. To create a matrix in MATLAB, use semicolons to separate vectors in different rows. Example: mat = [1 2 3;4 5 6;7 8 9]; Indexing a matrix A vectors was just has a single dimension (row or column) and thus a single index is expected to return a value from a vector. But a matrix contains two dimensions (row and column) so it needs two indices to return a single value. One index for row and another for column. Single Value Indexing Example: mat(1,3) this returns the matrix element at row 1 and column 3.
  • 31.
    Multiple Values Indexing 1.Single row, multiple columns 2. Multiple rows, single columns 3. Multiple rows, multiple columns It is also possible to return multiple values from a matrix using the colon notation. The colon notation used for a matrix with two dimensions is as follows: mat(start:change:last, start:change:last) The first colon notation selects the rows and second one selects the columns. Example: mat(1:3, 2:4) this command selects the rows 1, 2 and 3 and returns the second, third, and fourth elements within these rows.
  • 32.
    Figures and Plots figure Tocreate a window and print graphs on it you need to use the figure command. This command creates a new figure which is built-in to MATLAB and it is possible to draw on that figure. After opening the window we can draw on it. There are many ways to draw on the figure like:  line: creates a line  rectangle  imshow: prints an image on the figure  plotting functions o plot: Normal plot o stem: Discrete plot o scatter: Just draws circles at locations specified by the inputs x and y without connecting them. It is also known as bubble plot. o stairs: o bar: plot In MATLAB it is very common to have multiple versions of the same function and you select the version that is appropriate to your application. A common version of the plot function accepts two inputs: 1. x 2. y It has the form plot(x, y). Simple plot example: If there is a function of that form: y = f(x) = x + 2 It is possible to have multiple values for x and find the y of each input. If input is 1, 2, 3, 4 thus output will be 3, 4, 5, 6. We can draw this function using the plot command. So the complete commands to be used are:
  • 33.
    x = [12 3 4]; y = x + 2; figure plot(x,y) Relationship between plot and figure It is not required to enter the figure command. By default when the plot command get executed it opens a new figure if no existing figure is actually opened. When just a single plot is to be created the figure command can be ignored. But ignoring the figure command when multiple plots are to be created may lead sometimes to problems. Multiple plots commands but ignoring the figure command For example: Suppose that there are two functions to draw. If the figure command was ignored then when entering the first plot command a new figure will be opened and the plot will appear on it. When the second plot command gets entered it will replace the plot on the active figure. x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; plot(x,y1) plot(x,y2) The solution is to open a new figure for each new plot. x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure plot(x,y1) figure plot(x,y2) For the first plot, it will search for an existing figure and it will find the figure that was just created using the figure command. For the second plot, it will search for an existing figure to use. It will find two figures that were created by the two figure commands. Which one it will be used? The answer is that the latest active figure is the one to be used.
  • 34.
    Later you willknow how to select a specific figure to plot on. Multiple plots on the same figure Opening a new figure for each new plot may create a large number of figures. One figure may hold multiple plots. This can occur in three ways:  Using the plot command: single figure, multiple plot  Using the hold on and hold off commands: single figure, multiple plot  Using subplot: single figure, multiple plot Using the plot command: single figure, multiple plot Another version of the plot function may accepts multiple x and multiple y plot(x1, y1, x2, y2, x3, y3, …) For example: x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; plot(x,y1, x,y2) The advantage of this option is that it differentiates among the different functions plotted by giving each one a different color. Using the hold on and hold off commands: single figure, multiple plot The second way is to use the hold on and hold off commands. These commands are used if you are creating a single plot but this plot is created using multiple plot commands. If there are multiple plots created on one figure the last plot will override all the previous plots. But when entering the hold on command MATLAB knows that the subsequent plots will be drawn on the same figure. So hold on tells MATLAB to continue drawing on the same figure. x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure plot(x,y1) hold on plot(x,y2)
  • 35.
    This option assumesthat you create a single plot and continue creating the plot. So for the different plots created MATLAB does not differentiate among them and not give each plot a different color. All plots will appear with the same color as if they were of the same plot. But if you are to create 3 plots and want 2 of them to appear on the same figure and another one to appear on another figure then you can make the first plot, use the hold on command that tells MATLAB to continue drawing on the same figure and enter the second plot. Then to tell MATLAB not to use that figure to draw next plots on it use the hold off command. The hold off command tells MATLAB to open a new figure to draw. Explain why the plot(x,x) overrides the previous plot: x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure plot(x,y1) hold on plot(x,y2) hold off plot(x,x) Using subplot: single figure, multiple plot It is possible to divide the figure into multiple cells and make plots in these cells. For example: x = [1 2 3 4]; y1 = x + 2; y2 = x + 10; figure subplot(1,2,1) plot(x, y1) subplot(1,2,2) plot(x, y2) Graph Axis Limits What limits are used by MATLAB for axis?
  • 36.
    MATLAB automatically selectsthe axis limits from the data. Example: x = [1 4 8 10 13]; y = x + 3; plot(x,y) MATLAB knows that x-axis starts from 1 to 13 so it will set the limits of the x-axis to 1 and 13. It also knows that the minimum y-value will be 4 and the maximum is 16 so it will set the y-axis limits to 4 and 16. MATLAB uses the axis command to change the axis limits. It has the following form: axis([xmin, xmax, ymin, ymax]) To allow MATLAB to automatically chooses the minimum limits use –inf and for maximum limits to inf. xlim([xmin, xmax]) and ylim([ymin, ymax]) produces the same results as axis([xmin, xmax, ymin, ymax]) Other Useful Functions:  disp  fprintf  input  pause  waitforbuttonpress  exit  quit  clf