Comp 116 introduction to scientific programming
Download
1 / 26

COMP 116: Introduction to Scientific Programming - PowerPoint PPT Presentation


  • 71 Views
  • 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)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
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>

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

    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



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



ad