Comp 116 introduction to scientific programming
1 / 26

COMP 116: Introduction to Scientific Programming - PowerPoint PPT Presentation

  • Uploaded on

COMP 116: Introduction to Scientific Programming . Lecture 37: Final Review. Functions. Writing Simple function. function [o1, o2]= funcName ( i1, i2 ) % Function Comments … % Body (implementation) end %optional. Can have multiple inputs (i1) and multiple outputs (o2)

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'COMP 116: Introduction to Scientific Programming' - pete

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Writing simple function
Writing Simple function

function [o1, o2]=funcName( i1, i2 )

% Function Comments

… % Body (implementation)

end %optional

  • Can have multiple inputs (i1) and multiple outputs (o2)

  • function [] = funcName()

  • function o1 = funcName()

  • function o1 = funcName( i1 )

  • function o1 = funcName( i1, i2 )

  • function [o1, o2] = funcName( i1, i2, i3)

Workspace global vs local storage
WorkspaceGlobal vs. Local Storage

  • Global Workspace

    • Shared by Command Window and script commands

  • Local Workspace

    • Created locally on entry to each function

    • Disappears on exit from function call.

% This is a script

radius = 10;

area = pi .* radius .^2;

function [area] = circ_area(radius)

area = pi .* radius .^ 2;

% Call function in workspace

my_area = circ_area( 10 );

Loops for loop statement the counted loop solution
Loops: for loop statementthe counted loop solution

for <varindex> = <start>:<stop>

<Body: do some work>


for <idx> = <start>:<step>:<stop>

<Body: do some work>


Examples find sum
Examples: Find sum

function ret=my_sum(A)

% find minimum in the vector A


for i=1:length(A)




Find minimum will be very similar

Examples find the first occurrence of k in an array
Examples: Find the first occurrence of k in an array

function elem=find_first(A,k)


for i=1:length(A)

if (A(i)==k)






  • Find the minimum value in a matrix

  • Given an array, check if any two elements of the array sum to zero

Loops while loop statement the conditional loop solution
Loops: while loop statementthe conditional loop solution

while <test>

<Body: do some work>

<Update:make progress towards exiting loop>


  • While loops are great if we don’t know how many times we need to loop, but if we can write a test for when we’re done

  • For this to work properly, the test needs to evaluate to a logical value

  • The while loop will run as long as test evaluates to true

  • The while loop does not have a built-in counter like the for-loop (if you want to count something, you need to implement the counter yourself)

Example golden ratio
Example: Golden Ratio

  • Golden ratio is the solution of x^2-x-1=0

  • For any positive number x, sqrt(x+1) is a better approximation of golden ration than x. Use this rule in a while loop to find the some x such that abs(x^2-x-1) is less than 0.000001



    while abs(x^2-x-1) > eps



Strings as a vector of chars
Strings as a vector of chars

  • Can be manipulated like any other vector

s1 = 'The quick brown fox '

s2 = 'jumped over the lazy dog'

s = [s1, s2] % concatenate strings

s(5) % ans = q

s(17:19) % ans = fox

jIdx = find( s == 'j' )

jStr= s(jIdx:jIdx+3) % ans = jump

String comparison
String Comparison

  • Avoid normal comparison operators!

    • s1 == s2, s1 < s3, s1 >= s3

    • Operators work element by element (on characters)

    • Thus, strings (i.e., the vector of chars) must be same length

  • Use string comparison functions instead

    • strcmp(), string comparison

    • strcmpi, string comparison while ignoring case

    • strncmp, strncmpi:

      • Similar, but compares first n characters only

String searching
String Searching

  • strfind

    • Search for a string inside another string

    • returns indices to start of each instance

strVal = [‘with great power comes great responsibility.’];

strfind( strVal, ‘great’)

% ans = [6 24]

String replacement
String Replacement

  • strrep

strVal = [‘with great power comes great responsibility.’];

strrep( strVal, ‘great’, ‘no’)

Cell arrays vs arrays
Cell Arrays vs. Arrays

Basically, think of cell arrays as being more flexible data structures than the ‘standard’ arrays.

Accessing cell arrays
Accessing Cell Arrays

  • Crucial distinction between {} and () operators


    A = { false, rand(3); 4.0, ‘This is a string’ };

  • A{1} or A{1,1} extracts the logical value false

  • A(2) or A(2,1) extracts a 1x1 cell-array containing 4.0

  • A(2,:) extracts a 1x2 cell-array containing the bottom row

  • A{:,2} extracts the values of the second column as separate entities; use: [a,b] = A{:,2} for proper assignment

    Indices work just as for ‘standard’ arrays.

Cell arrays vs structures
Cell Arrays vs. Structures

Structures are very convenient data types when storing

Information belonging to one organizational unit, e.g.,



Date of Birth




  • Use named ‘fields’ for each variable = 'Alexander the Great';

alex.occupation = 'Conqueror';

alex.birth = 356;

alex.fictional = false;


  • Use named ‘fields’ for each variable

  • Use the struct() function, with name-value pairs = 'Alexander the Great';

alex.occupation = 'Conqueror';

alex.birth = 356;

alex.fictional = false;

alex = struct('name', 'Alexander the Great',...

'occupation', 'Conqueror', ...

'birth', 356, ...

'fictional' = false);

Structure arrays
Structure Arrays

  • One way to initialize is to use a ‘template’

% create structure layout

% note the use of default values and empty arrays

template = struct( 'name', 'no name', ...

'nickname', 'no name', ...

'emails', [], ...

'department', 'undeclared', ...

'type', 'undergrad', ...

'year', 1 );

% create structure array

students = repmat( template, 1, 30 );

% now fill in each structure in the array

Useful stuff
Useful stuff

  • Opening a file:

    • help fopen

    • Open in read, write or append mode

    • Always close your open files with fclose

  • Text files:

    • Writing: fprintf

    • Reading: fgetl

  • MATLAB data files:

    • Writing: save

    • Reading:load

Other useful notes

  • feof: test of end of file

  • fprintf: use ‘%d’, ‘%f’, etc.

  • fgetl: get a line from a (text) file