1 / 28

Lecture 14: M/O/F/ for Engineering Applications - Part 2

Lecture 14: M/O/F/ for Engineering Applications - Part 2. BJ Furman 28NOV2011. The Plan for Today. Matlab/Octave/FreeMat (M/O/F) for engineering applications – part 2 Recap M/O/F key concepts Element-by-element operations (dot operator) Function examples 2D graphs File IO

barbra
Download Presentation

Lecture 14: M/O/F/ for Engineering Applications - Part 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lecture 14: M/O/F/ for Engineering Applications - Part 2 BJ Furman 28NOV2011

  2. The Plan for Today • Matlab/Octave/FreeMat (M/O/F) for engineering applications – part 2 • Recap M/O/F key concepts • Element-by-element operations (dot operator) • Function examples • 2D graphs • File IO • Resources for more information

  3. Learning Objectives • Distinguish between matrix and array arithmetic, and use them appropriately • Explain the differences between script files and functions • Explain the basic elements of creating a 2D graph • Explain how to read from and write to files

  4. Last Lecture • Overview of Matlab/Octave • Useful commands • The array as a fundamental element • creating arrays • indexing elements • vectors • colon operator • linspace • logspace • extracting sub-arrays using indexing and the colon operator • special matrices • ones(), zeros(), diag(), eye() • Introduction to plotting in M/O/F via script file • comparison to Ch and Excel

  5. Arrays, Vectors, and Matrices • Array : • A collection of data elements arranged in rows and columns • Vector: • A one-dimensional array (single row or single column of data elements) • Matrix : • A two-dimensional array (more than one row and/or column of data elements) >> A=[1:9] row or column? column vector >> B=[1:9]’ >> C=[1:3; 4:6; 7:9] C = 1 2 3 4 5 6 7 8 9

  6. Colon Operator vs. linspace() • What will the following do? • D=0 : 3 : 10 • F=linspace(0, 10, 11) • Observations about the two methods: • both methods produce vectors with equally spaced elements • colon operator method allows you to specify the first element and the interval spacing between elements, but notthe number of elements • If just start : end, then spacing is 1 • linspace method allows you to specify the first and last elements of the vector, but notthe spacing between elements base : increment : limit start : end : n

  7. Review of length() and size() • What will the following do? • length(ones(1,3)) • length returns the number of elements of the vector • size(zeros(2,3)) • size returns the size of the dimensions of its argument

  8. Review of Array Manipulation • Given G=[2 4 6; 8 10 12], what is: • G(2,3) • G(: , 2) • G(4) • G(1,1)=0 • G(1, :)=0 • Observations: • Array indexing begins with 1 (contrast with C) • : means “all of” the elements in that dimension • Extract elements by indexing • Extract sub-arrays using vectors as the indexing arguments

  9. More Array Manipulation • Suppose H=1:9 (what will this produce?) • How could we form into a 3x3 matrix? • Reshape function • I=reshape(H,3,3) • How to transpose the rows to be the columns? • Reverse the order of the rows of I • J=I(3:-1:1,:) • Reverse the order of the columns of I (how?) • K=I(:, 3:-1:1) • Reverse the order of all the elements of I (how?) • Pseudocode: • Index I in reverse order • Reshape I = I’ L = reshape(I(9:-1:1),3,3)

  10. Matrix and Array Arithmetic • Arithmetic operators: • + - * / \ ^ ’ • addition and subtraction are done element-by-element (same for matrix and array arithmetic) • Unless one is a scalar, the operands must be of the same size • scalar  (matrix or array) --> ? • (matrix or array)  (matrix or array) --> ? • (matrix or arrays) must be of the same size • For the other operators, need to distinguish between matrix and array operation • Matrix arithmetic operations • per rules of linear algebra • rows and columns must conform • For example, A x B: must have column and row agreement • Array arithmetic operations • element-by-element • Denote with dot operator: .* ./ .\ .^ .’ (array transpose) add. sub. mult. right div. left div. expon. algebr. transpose B A

  11. Matrix and Array Arithmetic Examples • Scalar and matrix operands • If L=ones(1,5) and M=ones(1,4) • N = 2*L --> ? • N – 1 --> ? • Non-scalar operations • If O = [ 1:5 ] • O + M --> ? • L * O --> ? • L* O’ --> ? ??? Error using ==> + Matrix dimensions must agree. (1x5 * 1x5 does not work!) ??? Error using ==> * Inner matrix dimensions must agree. 15 Same as sum(L .* O) (1x5 * 5x1 works! Inner matrix dimensions agree. Results in a 1x1)

  12. Array Operations • Element-by-element array operation • Ex: Given a set of distances and times, calculate average speeds and maximum of averages • How would you do this in C? • Pseudocode: • Calculate avg. speeds: speed[i] = distance[i] / time[i], for i=1 to 4 • Determine maximum speed • M/O/F (vectorize!): • distances=[120, 213, 87, 35] (in miles) • times=[ 2, 3.8, 0.9, 0.6] (in hours) • speeds=distances ./ times %( note: ‘dot /’  divide element-by-element) • max_speed=max(speeds) • To get the maximum speed and its index: • [max_speed, i] = max(speeds)

  13. i2 i1 R2 +V i3 R3 R1 Circuit Analysis Equations • Matrix operations • Matrix division • Recall the circuit analysis • R1=10k • R2=R3=5k • V=10V • Matrix solution Think of it like inverting R and multiplying on the left side of V If we had iR = V instead, we’d use ‘right’ division to solve for i: ( i = R / V ) Think of it like inverting R and multiplying on the right side of V: i = VR-1

  14. Circuit Analysis Solution • Circuit analysis solution: • Build R, build V, solve for i • Build R • all at once • R=[1 -1 1; 0 0 10e3; 0 10e3 0] or • build by rows and combine • eq1 = [ 1 -1 1] • eq2 = [0 0 10e3] • eq3 = [0 10e3 0] • R = [eq1; eq2; eq3] • Build V • V = [0 10 10]’ (note: transposed) • Solve I = R \ V • I = R \ V • R1=10k • R2=R3=5k • V=10V

  15. Dot Product Example • Another example of element-by-element operations • dot product of two vectors

  16. Dot Product Function Development • Define the problem • Create a function that will take two vectors as arguments and will return their vector dot product • Inputs • v1, v2 (three-element row vectors) • Outputs • z (the dot product) • Algorithm • Multiply v1 and v2 element-by-element • Sum the element-by-element products • Return the sum

  17. Dot Product Function in M/O/F function [z] = dot_prod(v1, v2) % dot_prod(v1,v2) computes the vector dot product between vectors v1 and v2 % Function dot_prod(v1,v2) computes and returns the vector dot product between vectors v1 and v2 z = sum(v1.*v2); A = [ 1 2 3 ]; B = [ 4 5 6 ]; % what should A dot B result in? A_dot_B = dot_prod(A,B) Write the function Test it out

  18. Review of Functions • Functions • Like script M-files, but several differences: • first line (function declaration) 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, variables are global • must be named, ‘function_name.m’ (same as file name) • Make sure you add comments at the start that describe what the function does (see example code) • Example: root-mean-square function,rms.m

  19. Root Mean-Square Function Development • Functions, cont. • Example: root-mean-square function, cont. • Pseudocode: • square each element of x • sum the squares • divide by N • take the square root • Square each element • 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! • Use: whichnameto check

  20. Root Mean-Square Function Implementation • 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 vs = v.^2; % what does this line do? Also note semicolon. s = length(v); y = sqrt(sum(vs)/s); H1 comment line (used in lookfor) Comments that will be displayed by help command Let v=sin([0: 0.01*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?

  21. More Robust Root Mean-Square Function • Functions, cont. • Make rms function more robust • to work with row or column vector or matrix with column vectors of data function [rmsout] = rms2(v) %RMS2(v) Root mean square of v % Function rms2(v) returns a row vector, where % each element is therms value of values in each% column of v vs = v.^2; s = size(v); rmsout = sqrt(sum(vs,1)/s(1));

  22. File I/O with M/O/F • Data Input - simplest method • load command • Ex: load(‘data_file.txt’) • reads on a row-by-row basis • data values separated by spaces or commas and rows terminated by new line • columns must have the same number of elements • data is stored in workspace in an array with same name as the argument used in the load function • Ex. Portland International Airport monthly rainfall • load (‘PDXprecip.dat’) % must be in search path!

  23. File I/O with M/O/F, cont. • Data Output - simplest method • Save command • Ex: save(‘data_file_name’) • Saves all the variables into a .mat file named ‘data_file_name’ • Many other commands are available for special purpose file I/O

  24. File I/O and Plotting Example % read data into PDXprecip matrix load('PDXprecip.dat'); % copy first column of PDXprecip into month month = PDXprecip(:,1); % and second column into precip precip = PDXprecip(:,2); % plot precip vs. month with circles plot(month,precip,'o'); % add axis labels and plot title xlabel('month of the year'); ylabel('mean precipitation (inches)'); title('Mean monthly precipitation at Portland International Airport'); file_io_example.m Adapted from: http://web.cecs.pdx.edu/~gerry/MATLAB/plotting/loadingPlotData.htmlvisited 15NOV2009

  25. More on Plotting General Format: plot (x, y, fmt, ...) • Add a red line through the data • Plot multiple sets of data on a single graph and add a legend • grid on • Sub-plots • Format: • subplot (m,n,p) • Figure window divided into m x n matrix of plotting areas • Procedure: • Pick the sub-plot window • Execute plot commands for that sub-plot % plot precip vs. month with circles plot(month,precip,'o',month,precip,'-r'); % copy first column of PDXtemperature into month month = PDXtemperature(:,1); % and second column into high_temp high_temp = PDXtemperature(:,2); % and third column into low temp low_temp = PDXtemperature(:,3); % and fourth column into avg temp avg = PDXtemperature(:,4); % generate the plot plot(month,high_temp,'ko',month,low_temp,'k+',month,avg,‘r-'); % add axis labels and plot title xlabel('Month'); ylabel('temperature (degrees F)'); title('Monthly average temperature for PDX'); % add a plot legend using labels read from the file legend('High','Low','Avg'); multi_plot.m

  26. Y X r r ˆ = · v v i x Vector Dot Product Example Find the X and Y components of the vector, V Back

  27. Review

  28. 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

More Related