Introduction to MATLAB Programming www opencadd com br

Introduction to MATLAB Programming www. opencadd. com. br

Introduction to MATLAB Programming - 2 Section Outline • • Script Files • • Flow Control & Array Operations EVAL Command Functions • • Structural Syntax Variables & Workspaces Subfunctions and Private Functions Visual Debugging Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 3 The MATLAB Path • MATLAB Path: • • • List of directories searched by MATLAB. (Includes toolbox directories) Path Cache: • • • List of toolbox files & locations. Created at startup to increase speed. Only updated when PATH command is called. Working with the Path: • • Path Browser (PATHTOOL) PATH, ADDPATH, RMPATH Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 4 MATLAB Editor/Debugger » edit <filename> Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 5 Script M-files • • Standard ASCII text files Contain a series of MATLAB expressions (Typed as you would at the command line) • Commands parsed & executed in order % Comments start with "%" character pause % Suspend execution - hit any key to continue. keyboard % Pause & return control to command line. % Type "return" to continue. break % Terminate execution of current loop/file. return % Exit current function % Return to invoking function/command line. Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 6 Flow Control Constructs • • Logic Control: • • IF / ELSE SWITCH / CASE / OTHERWISE Iterative Loops: • • FOR WHILE Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 7 The if, elseif and else statements • • Works on Conditional statements if I == J Short-circuited in MATLAB - once a condition is true, the sequence terminates. elseif abs(I-J) == 1 A(I, J) = 2; A(I, J) = -1; else A(I, J) = 0; end » if_examp Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 8 Switch, Case, and Otherwise • • More efficient than elseif statements Only the first matching case is executed switch input_num case -1 input_str = 'minus one'; case 0 input_str = 'zero'; case 1 input_str = 'plus one'; case {-10, 10} input_str = '+/- ten'; otherwise input_str = 'other value'; end » switch_examp Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 9 The for loop • • • Similar to other programming languages Repeats loop a set number of times (based on index) Can be nested N=10; for I = 1: N for J = 1: N A(I, J) = 1/(I+J-1); end » for_examp Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 10 The while loop • Similar to other programming languages • Repeats loop until logical condition returns FALSE. • Can be nested. I=1; N=10; while I<=N J=1; while J<=N A(I, J)=1/(I+J-1); J=J+1; end I=I+1; end » while_examp Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 11 Recall: Array Operations • Using Array Operations: Density = Mass(I, J)/(Length. *Width. *Height); • Using Loops: [rows, cols] = size(M); for I = 1: rows for J = 1: cols Density(I, J) = M(I, J)/(L(I, J)*W(I, J)*H(I, J)); end » array_vs_loops Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 12 EVAL Command • Evaluates the MATLAB expression specified by the input string. • Very useful for inserting indices into strings. % This file creates the first N magic matrices. % Each matrix is saved as a variable: "magic#". N = 10; for I = 1: N eval(['magic', num 2 str(I), ' = magic(I)']); end » eval_examp Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 13 Exercise: Script M-files Write a script file to monitor process variation: • Load data: >> data = load('script_data. txt'); (M-by-N process data matrix - M parts per shift, N shifts) • For each shift: • • Calculate the mean & standard deviation. Save the data, mean & SD to the workspace. (Use a separate variable for each shift: data 1, data 2, . . . ) • • • Plot the data in a new figure window. Plot lines showing the mean and up to +/- 3 STD. Annotate the figure appropriately. Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 14 Results: Script M-files Copyright ã 1984 - 1998 by The Math. Works, Inc.
![Introduction to MATLAB Programming - 15 Solution: Script M-files [parts, shifts]=size(data); for I=1: shifts Introduction to MATLAB Programming - 15 Solution: Script M-files [parts, shifts]=size(data); for I=1: shifts](http://slidetodoc.com/presentation_image/4df3fdda4a9a1537e983034a732abe3c/image-15.jpg)
Introduction to MATLAB Programming - 15 Solution: Script M-files [parts, shifts]=size(data); for I=1: shifts DATA = data(: , I); MEAN = mean(DATA); STDEV = std(DATA); % Calculating mean & Std. deviation figure(I); clf; hold on % Creating plots plot(1: parts, DATA, 'b'); plot([0 parts], [0 0], 'k: ', . . . [0 parts], [1 1]*MEAN, 'r-. ', . . . [0 parts], [1 1]*(MEAN-STDEV), 'r: ', . . . [0 parts], [1 1]*(MEAN+STDEV), 'r: ', . . . ); %. . . etc. % Writing variables to workspace eval(['data', num 2 str(I), '=data(: , I); ']); eval(['mean', num 2 str(I), '=means(I); ']); eval(['stdev', num 2 str(I), '=stdev(I); ']); end » script_soln (uses: script_data. txt) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 16 Functions • • • Core MATLAB (Built-in) Functions • sin, abs, exp, . . . MATLAB-supplied M-file Functions • mean, stat, … User-created M-file Functions • • ? ? ? Differences between Script & Function M-files: • • Structural Syntax Function Workspaces, Inputs & Outputs Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 17 Structure of a Function M-file Keyword: function Function Name (same as file name. m) Output Argument(s) Input Argument(s) function y = mean(x) % MEAN Average or mean value. Online Help % For vectors, MEAN(x) returns the mean value. % For matrices, MEAN(x) is a row vector % containing the mean value of each column. [m, n] = size(x); MATLAB Code if m == 1 m = n; end y = sum(x)/m; » output_value = mean(input_value) Command Line Syntax Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 18 Multiple Input & Output Arguments function r = ourrank(X, tol) % OURRANK Rank of a matrix Multiple Input Arguments ( , ) s = svd(X); if (nargin == 1) tol = max(size(X))*s(1)*eps; Multiple Output Arguments [ , ] end r = sum(s > tol); function [mean, stdev] = ourstat(x) % OURSTAT Mean & std. deviation [m, n] = size(x); if m == 1 m = n; end mean = sum(x)/m; stdev = sqrt(sum(x. ^2)/m – mean. ^2); » RANK = ourrank(rand(5), 0. 1); » [MEAN, STDEV] = ourstat(1: 99); Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 19 Workspaces in MATLAB • MATLAB (or Base) Workspace: For command line and script file variables. • Function Workspaces: Each function has its own workspace for local variables. Communicate to Function Workspace via inputs & outputs. (Promotes structured coding & prevents name conflicts. ) • Global Workspace: Global variables can be shared by multiple workspaces. (Must be initialized in all relevant workspaces. ) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 20 Inter-Workspace Communication Function inputs and outputs Global variables (AVOID THESE) Initialize global variables in all relevant workspaces: » global variable_name MATLAB Workspace Function Workspace Global Workspace Initialize global variables in the “source” workspace before referring to them from other workspaces. Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 21 Tips for using Global Variables • DON’T USE THEM • If you absolutely must use them: • • Avoid name conflicts whos global clear global isglobal() Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 22 Exercise: Function M-files Let’s go back to the process monitoring exercise: • Start with your script file (or the given solution) >> edit script_soln • Create a function which replicates as much of the code inside the for loop as possible. (NOTE: It may not make sense to replace everything) • • Now modify your script file to call your function. Run your new script file and compare the results. Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 23 Results: Function M-files Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 24 Solution: Function M-files (1) % % Modified Script file ========== This solution sets the figure#, overwrites the title, & writes the workspace variables outside the function. shifts=size(data, 2); for I=1: shifts DATA = data(: , I); figure(I) % Function Call [MEAN, STDEV] = func_plot(DATA); % Writing variables to workspace eval(['data', num 2 str(I), '=DATA; ']); eval(['mean', num 2 str(I), '=MEAN; ']); eval(['stdev', num 2 str(I), '=STDEV; ']); end » func_soln (uses: func_plot & script_data. txt) Copyright ã 1984 - 1998 by The Math. Works, Inc.
![Introduction to MATLAB Programming - 25 Solution: Function M-files (2) function [MEAN, STDEV] = Introduction to MATLAB Programming - 25 Solution: Function M-files (2) function [MEAN, STDEV] =](http://slidetodoc.com/presentation_image/4df3fdda4a9a1537e983034a732abe3c/image-25.jpg)
Introduction to MATLAB Programming - 25 Solution: Function M-files (2) function [MEAN, STDEV] = func_plot(data) % FUNC_PLOT Calculates mean & std. deviation & plots data DATA = data(: ); parts= length(DATA); MEAN = mean(DATA); STDEV = std(DATA); % Calculating mean & Std. deviation clf; hold on % Creating plots plot(1: parts, DATA, 'b'); plot([0 parts], [0 0], 'k: ', . . . [0 parts], [1 1]*MEAN, 'r-. ', . . . [0 parts], [1 1]*(MEAN-STDEV), 'r: ', . . . [0 parts], [1 1]*(MEAN+STDEV), 'r: ', . . . ); %. . . etc. xlabel('Part Number'); ylabel('Deviation from Spec. (mm)'); » func_soln (uses: func_plot & script_data. txt) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 26 Subfunctions • Allows more than one function to be within the same M-file (modularize code) • M-file must have the name of the first (primary) function • Subfunctions can only be called from within the same M-file • Each subfunction has its own workspace Copyright ã 1984 - 1998 by The Math. Works, Inc.
![Introduction to MATLAB Programming - 27 Example: Subfunctions function [totalsum, average] = subfunc (input_vector) Introduction to MATLAB Programming - 27 Example: Subfunctions function [totalsum, average] = subfunc (input_vector)](http://slidetodoc.com/presentation_image/4df3fdda4a9a1537e983034a732abe3c/image-27.jpg)
Introduction to MATLAB Programming - 27 Example: Subfunctions function [totalsum, average] = subfunc (input_vector) Primary Function % SUBFUNC Calculates cumulative total & average totalsum = sum(input_vector); average = ourmean(input_vector); %Call to subfunction y = ourmean(x) % (OURMEAN) Calculates average Sub. Function [m, n] = size(x); if m == 1 m = n; end y = sum(x)/m; » [SUM, MEAN] = subfunc(rand(1, 50)) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 28 Private Functions • • private directory Reside in a subdirectory named "private" Only accessible to functions in parent directory. Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 29 MATLAB Calling Priority High variable built-in function subfunction private function » cos='This string. '; » cos(8) ans = r » clear cos MEX-file » cos(8) P-file ans = M-file -0. 1455 Low Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 30 Visual Debugging Select Workspace Set Auto. Breakpoints Set Breakpoint Clear Breaks Step In Single Step Continue Quit Debugging » [SUM, MEAN] = subfunc(rand(1, 50)) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 31 Example: Visual Debugging • Set up your debugger to stop if an error occurs • Then run: » [SUM, MEAN] = subfunc_error(rand(1, 50)) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 32 Example: Visual Debugging (2) • Current Location Editor/Debugger opens the relevant file and identifies the line where the error occurred. Current Workspace (Function) Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 33 Example: Visual Debugging (3) Error message Debug Mode Access to Function’s Workspace Copyright ã 1984 - 1998 by The Math. Works, Inc.

Introduction to MATLAB Programming - 34 Section Summary • • Script Files • • Flow Control & Array Operations EVAL Command Functions • • Structural Syntax Variables & Workspaces Subfunctions and Private Functions Visual Debugging Copyright ã 1984 - 1998 by The Math. Works, Inc.
- Slides: 34