320 likes | 515 Views
Lecture 13: M/O/F/ for Engineering Applications - Part 1. BJ Furman 26NOV2012. The Plan for Today. Matlab/Octave/FreeMat (M/O/F) for engineering applications Overview of M/O/F Matlab/FreeMat environment Octave command line Basic operations Script files Resources for more information.
E N D
Lecture 13: M/O/F/ for Engineering Applications - Part 1 BJ Furman 26NOV2012
The Plan for Today • Matlab/Octave/FreeMat (M/O/F) for engineering applications • Overview of M/O/F • Matlab/FreeMat environment • Octave command line • Basic operations • Script files • Resources for more information
Learning Objectives • Explain what M/O/F are • Navigate the Matlab user interface and Octave command line • Use M/O/F as a scratch pad • Create script files to execute a sequence of commands
Matlab and Octave • M/O/F are ‘high-level’ languages • They abstract away the nitty-gritty details • Numerical calculation • Oriented toward engineering, mathematical, and scientific computing • Matlab (Matrix Laboratory) • Particularly good at handling arrays! • Powerful graphics and analysis tools • Controls, signal processing, data analysis, and other specialized ‘toolboxes’ are available • Widely used in industry • Matlab is commercial software (a student version is available) http://www.mathworks.com/ • Octave and FreeMat are open source and free: http://www.gnu.org/software/octave/ (main page)http://freemat.sourceforge.net/index.html (main page) Key point!
Matlab (ver. 6.5) Environment (GUI)Default Window Layout Workspace/Current Directory Window Workspace: lists variables Directory: files in current dir Command Window Interactive ‘scratch pad’ Command History Window
Octave Command Line Enter commands at the prompt
QtOctave GUI Enter commands at the prompt
Matlab as a ‘scratch pad’ Info on variables in the workspace Variables are dynamically typed
Octave as a ‘scratch pad’ dynamically typed
M/O/F Basics - 1 • Fundamental element: the array • even scalars are stored as 1x1 array of double floating point value • How many bytes? • See Workspace Window • Useful commands (see documentation for more details!) • who (information about what is in memory) • whos (more detailed information about what is in memory) • clc (clears the command window. In QtOctave, View Clear Terminal) • clear (clears all user defined variables) • help name(provides information on command name)
M/O/F Basics - 2 • Script files (.m files) • Text files containing M/O/F statements • Type in a text editor (M/O/F) or useM-file editor in Matlab (File/New/M-File or Ctrl-n) • Comments • Matlab: % • Octave: % or # • FreeMat: % • Example: look at cool_plot.m • Verify directory containing cool_plot.m is in the file path • MATLAB: File | Set Path… | select folder • Octave: addpath(‘dir_path’) find from Windows Explorer
Octave Script File Example • cool_plot.m needs to be in the ‘load path’ • Octave: addpath(dir-path) • Example (yours may be different): • addpath('C:\Octave\Octave_code') • Matlab: File | Set Path…
Ch Example See: chap. 23 of The Ch Language User's Guide and chap. 2 of The Ch Language Environment Reference
Excel Example • Data needs to be equally spaced • Select z-data values • Insert | Other Charts | Surface • Use Chart Tools | Layout tab tocontrol display
M/O/F Basics - 3 • Array creation • A = [1 2 3; 4,5,6; 7 8 9] • size(A) • Indexing elements • A(1,2) • Adding elements • A(4,2) = 13 • A(4,2) = 13; Separate elements by spaces or commas, and rows by semicolon or carriage return What does this do? Index by enclosing indices in ( ) Which element does this choose? Contrast with C. What does this do? Contrast with C. The semicolon at the end suppresses the output
M/O/F Basics - 4 • Vectors (just 1xn or nx1 arrays) • B=[sin(pi/4), -2^3, size(A,1)] • Vectors using the colon operator • C = 1 : 0.25 : 2 • D = 0 : 5 • Linspace • E = linspace(0,5,3) • Logspace • F = logspace(1,3,5) Note: limit is reached only if (limit-base)/increment is an integer 1 0.25 2 Format: base : increment : limit For an increment of 1: base : limit start : end : n For n elements linearly spaced between start and end Format: Format: start : end : n For n elements logarithmically spaced between start and end
M/O/F Basics - 5 • Manipulating arrays • Add a row • A = [ A ; [ 10 11 12 ] ] • Extract a sub-array • G = A(1:3, 1:2) • Colon operator by itself means, “all the elements” • Can apply to the dimensions of the arrays to access all the elements of a row or column • Can apply to the entire array to get all the elements as a column vector • What order will they come out? • Examples • H = [1:4; linspace(10,40,4); 400:-100:100] • I = H( [1 2], : ) • J = H( : ) Assuming A = [ 1 2 3; 4,5,6 ; 7 8 9 ] What does this do? Matlab stores array elements in column-major order. What will this produce?
M/O/F Basics - 6 • Special matrices • zeros, ones, eye • K=zeros(3) • L=ones(4) • M=eye(3)
M/O/F Basics - 7 • Matrix operations • Arithmetic just like with scalars! (But need to take care that dimensions agree) • N=L*7 • O=N+eye(4) • P=B*E • P=B*E’ • Q=A+B • Q=B+E • [1 2]*[3 ; 4] A=[1 2 3; 4,5,6; 7 8 9] B=[sin(pi/4), -2^3, size(A,1)] E=linspace(0,5,3) L=ones(4) What does the ‘ do?
i2 i1 R2 +V i3 R3 R1 M/O/F Basics - 8 • Matrix operations, cont. • Matrix division • Recall the circuit analysis problem • R1=10k • R2=R3=5k • V=10V • Matrix solution R = [1 -1 -1; 0 0 10e3; 0 10e3 0]; V = [0 10 10]’; I = R \ V If we had iR = V instead, we’d use ‘right’ division: ( i = R / V ) roughly the same as: i = VR-1
M/O/F Basics - 9 • Matrix operations, cont. • Element-by-element operations use . (dot) and the operator (other than addition/subtraction) • dot product of two vectors Note!! period-asterisk means element-by-element multiplication
M/O/F Basics - 10 • Functions • Like script M-files, but several differences: • first line must be of the form: function [output args] = function_name(input args) • variables generated in the function are local to the function, whereas for script files (.m files), variables are global • the file must be named, ‘function_name.m’ • Make sure you add comments at the start that describe what the function does • Example: root-mean-square function, rms1.m Name that you assign keyword
M/O/F Basics - 10.1 • Functions, cont. • Example: root-mean-square function, cont. • Pseudocode: • square each element of x • sum the squares • divide by N • take the square root • Expression to square each element in vector x • xs = x .^2 • Sum the squares • sums = sum(xs) • Divide by N • N = length(x) • ms = sums/N • Take the square root • rms = sqrt(ms) • Before you write the function, make sure the name you propose is not already used! • help fn_name
M/O/F Basics - 10.2 Functions, cont. Example: root-mean-square function, cont. function [y] = rms(v) % rms(v) root mean square of the elements of the column vector v % Function rms(v) returns the root mean square of the elements % of the column vector, v. If v is a matrix, then rms(v) returns % a row vector such that each element is the root mean square %of the elements in the corresponding column of v. vs = v.^2; % what does this line do? Also note semicolon. s = size(v); % what does this line do? y = sqrt(sum(vs,1)/s(1)); % what is s(1)? H1 comment line (used in lookfor) Comments that will be displayed by help command Let v=sin([0: 0.0001*pi: 2*pi]’), one period of a sine wave. The RMS valueof a sine wave is its amplitude*1/sqrt(2) Does rms() work with a row vector? How about a matrix?
M/O/F Basics - 10.3 • Functions, cont. • Make rms function more robust • to work with row or column vector or matrix with column vectors of data • Pseudocode: • Test for size of v • if > 2, print error message • else • if row vector • transpose • calculate rms • See rms3.m
Y X r r ˆ = · v v i x Vector Dot Product Example Find the X and Y components of the vector, V Back
References Matlab. (2009, November 6). In Wikipedia, the free encyclopedia. Retrieved November 6, 2009, from http://en.wikipedia.org/wiki/Matlab Matlab tutorials: http://www.mathworks.com/academia/student_center/tutorials/launchpad.html GNU Octave. (2009, October 31). In Wikipedia, the free encyclopedia. Retrieved November 6, 2009, from http://en.wikipedia.org/wiki/GNU_Octave Octave main page:http://www.gnu.org/software/octave/ (http://octave.sourceforge.net/ access to pre-built installers) Octave tutorials: http://homepages.nyu.edu/~kpl2/dsts6/octaveTutorial.html, http://smilodon.berkeley.edu/octavetut.pdf FreeMat. http://freemat.sourceforge.net/index.html ftp://www.chabotcollege.edu/faculty/bmayer/ChabotEngineeringCourses/ENGR-25.htm