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

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

6/21/2018 C/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 logarithm 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 integers • 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 decimal integer. 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 fraction. 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 backslash 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.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    11 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us