Comp 116 introduction to scientific programming
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

COMP 116: Introduction to Scientific Programming PowerPoint PPT Presentation


  • 53 Views
  • Uploaded on
  • Presentation posted in: General

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)

Download Presentation

COMP 116: Introduction to Scientific Programming

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


Comp 116 introduction to scientific programming

COMP 116: Introduction to Scientific Programming

Lecture 37: Final Review


Functions

Functions


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 );


Looping

Looping


Loops for loop statement the counted loop solution

Loops: for loop statementthe counted loop solution

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

<Body: do some work>

end

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

<Body: do some work>

end


Examples find sum

Examples: Find sum

function ret=my_sum(A)

% find minimum in the vector A

ret=0;

for i=1:length(A)

ret=ret+A(i);

end

end

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)

elem=0;

for i=1:length(A)

if (A(i)==k)

elem=i;

break;

end

end


Exercises

Exercises

  • 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>

end

  • 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

    eps=0.000001;

    x=100;

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

    x=sqrt(x+1);

    end


Strings

Strings


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 and structures

Cell Arrays and Structures


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

    Example:

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

Name

Age

Date of Birth

Height

Weight


Structures

Structures

  • Use named ‘fields’ for each variable

alex.name = 'Alexander the Great';

alex.occupation = 'Conqueror';

alex.birth = 356;

alex.fictional = false;


Structures1

Structures

  • Use named ‘fields’ for each variable

  • Use the struct() function, with name-value pairs

alex.name = '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


File i o

File I/O


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


Good luck

Good luck!


  • Login