<<

6/21/2018

C/++ Programming for Engineers: Matlab Scripts and Functions

John T. Bell

Department of Computer Science University of Illinois, Chicago

Reading Review

Which of the following would multiply the cosine of X times the common of X, when X is given in degrees? A. cos( X ) * log( X ) B. cos( X ) * log10( X ) C. cosd( X ) * log( X ) D. cosd( X ) * log10( X ) E. cos( X degrees ) * commonLog( X degrees )

2

1 6/21/2018

Matlab Script Files

• Any command that can be run in Matlab can be placed in an ordinary text file ( with a .m extension ) and run as a Matlab script. • The easiest way to do this is to use Matlab’s built-in editor and drag commands from command history into the script, & then edit. • Run the script by typing the script name, or by pressing the “run” button in the script editor.

3

Special Characters in Scripts

• The % percent sign is used to create comments, from the % to the end of the line. – %{ Large block comments in braces and % %} • The ; semi-colon at the end of the line suppresses the display of the command. • Three dots, … , at the end of a line … are used to continue … long lines onto the next line.

4

2 6/21/2018

Good Programming Style

• EVERY well-written program should be begin with a multi-line comment, providing the author’s name, a description of the program, and when it was written. • Use descriptive variable names – “temperature”, not “T” or “temp”. • Ample spaces and indentation. Be consistent. • Generous comments.

5

Basic Input in Matlab

• The input( ) command displays a prompt and receives an answer. For example: o speed = input( ‘Please enter a speed, in mph: ‘ ); • Use ‘s’ as a second argument when reading in character strings: o name = input( ‘What is your name?’, ‘s’ );

6

3 6/21/2018

Preview

What does the %g format specifier do in fprintf( ) ? A. It uses fixed-point format. B. It uses exponential notation. C. It uses engineering notation. ( Exponential in powers of 3, e.g. kilo, Mega, micro, etc. ) D. It uses either fixed-point or exponential notation, whichever “fits best” for the value being printed. E. It generates an error, since the % is for comments.

7

Simple Matlab Format Options

• format long / short – Adjusts # of digits shown. • format compact / loose – single/double spacing. • format bank – Dollars and cents • format rat – Ratio of two • help format – Shows more options.

8

4 6/21/2018

Formatted Output in Matlab

• The fprintf( ) command prints strings: – fprintf( ‘This program plots sine waves.’ ); • New lines start (only) when \n is printed: – fprintf( ‘This will print’ ); – fprintf( ‘ all on one line.\n’ ); • This will print all on one line. – fprintf( ‘This will print\n on\n three lines.\n’ ); • This will print • on • three lines.

9

Format Specifiers in fprintf( )

• Whenever a % is encountered in the output string, fprintf( ) prints a data value: – fprintf( ‘The result is %f mpg.\n’, mileage );

10

5 6/21/2018

Format Specifiers in fprintf( )

Operator Prints Description %f fixed-point f is for fixed-point.

d is for . The use of 'd' is due to historical reasons, and is slightly misleading because a decimal number %d integer could have a fractional part. In MATLAB, %d means decimal integer which does not have a .

i is for integer. This operator is identical to %d when %i integer formatting output. %c character c is for character. %s string s is for string.

11

Special Characters

Special character Description \n Prints a new line.

Two single quotation marks print a single quotation mark. Note that '' a single quotation mark alone would instead indicate the end of the format string.

Two percent characters print one percent character. Note that a %% single % character would instead indicate the start of a formatting operator like %f.

Two characters print one backslash character. Note that a \\ single backslash character would instead indicate the start of a special character sequence like \n.

\t Prints a tab.

12

6 6/21/2018

Floating Point Formats

Table 3.6.1: Floating-point number formatting operators.

Operator Description %f Fixed-point notation, 109.42 Scientific notation with lowercase e, %e as in 6.02e+23, 3.141593e+00 %g Either %f or %e, whatever is shorter Scientific notation with capital E, as %E in 6.02E+23, 3.141593E+00 Either %G or %E, whichever is %G shorter, 6.02E+23, 3.141593

13

Preview

What happens if a Matlab workspace contains a variable X, and then a script is run that creates a new variable X and gives it a value? A. There will now be two variables named X. B. The workspace X will be wiped out, and replaced with a new X. C. The X created in the script will only exist while the script runs, and will then disappear. D. The script X will be automatically given a different name. E. An error will occur, since two variables can’t have the same name.

14

7 6/21/2018

A Problem with Scripts

• Commands executed from a script run in the same scope as the command window. – Script commands can clobber command-window variables with the same variable names. – Script variables can clutter up the workspace unnecessarily. – Solve this by writing functions instead of scripts.

15

Function Scope

• Functions operate in their own space. • Variables defined within functions are totally independent of any variables defined in the command window, even if they happen to have the same name. • Because of this, values have to be passed in to functions, and the results passed back.

16

8 6/21/2018

Matlab Function Syntax

• The first ( non-comment ) line of a Matlab function file MUST have the following format: function [out1, out2, …] = funcName( in1, in2,… ) • ‘function’ is a required key word. • ‘funcName’ must match the name of the file, e.g. ‘funcName.m’ • The ‘in’ and ‘out’ variables can have any names. See next slides for details.

17

Matlab Function Inputs

• The variables in parentheses are called input parameters or arguments, used to “catch” the values passed in to the function. • Any changes made by a function to its input parmeters are local to the function, and do not affect the calling program. • If a function does not take any input arguments, the parentheses are still required.

18

9 6/21/2018

Matlab Function Outputs

• The [ out1, out2, … ] = format is for functions that return multiple results. – If a function returns a single result, the [ ] square brackets are not required. – If a function does not return any results, then the equals sign should also be omitted. • The program that called the function gets its results through the output parameters.

19

Matlab Function Help Comments

• Every Matlab function should contain a “help” comment, which is the first comment block after the “function” line. • The help comment is displayed whenever one types “help” for the function in question. ( The first line is displayed by lookfor. ) function [ finBalance, interest ] = BalanceWithInterestBoth( rate, initBalance ) % Calculates the final balance of an investment with compound interest. % Inputs: rate -- Interest rate, initBalance -- Initial balance. % Output: finBalance -- Final balance.

20

10 6/21/2018

Matlab Function Operation

• The code within a Matlab function is basically the same as a Matlab script. • Sometime before the function returns, it must assign values to all the output parameters. • The ‘return;’ statement ceases execution of the function, and returns control back to the calling program. No function code is executed after a return statement.

21

Calling Matlab Functions

• User-written Matlab functions are called by name, the same way that Matlab library functions are called. • Values or variables must be passed in to the function input parameters. • Variables must be provided to receive the output results.

22

11