matlab a brief introduction to programming. 1)background and getting started dartmouth college now...

33
MATLAB A brief introduction to programming

Upload: lesley-walters

Post on 11-Jan-2016

216 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

MATLAB

A brief introduction

to programming

Page 2: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

1) Background and Getting Started

Dartmouth College now has a site license http://caligari.dartmouth.edu/downloads/matlab Installs on Mac, Windows, or Linux

Running in the BIL (Linux): Command “matlab” launches latest installed

version Currently, most machines default to MATLAB 8.3

(R2014a) or 8.0 (R2013b)

Page 3: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Launching MATLAB

[aic-bil-ibm1] % matlab &

(&: don’t wait for it to quit in this shell)

Page 4: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

The MATLAB Path

The “path” is an ordered list of directories used to match commands to files>> path list the current path

>> addpath xyz add xyz to the path (for this session only)

>> which abc if abc is a command, give file it runs from

Page 5: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

2) MATLAB Data & Variables

Numbers in MATLAB are “floating point” (not integer)Some image types are int or unsigned intFor the most part, floats are fine for

anything numeric

Other basic data types are char (characters), struct (data structure), and cell (list element)

Page 6: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Basic Data Types

Most types can be turned into arrays:Numbers: vectorsChars: strings (or character arrays)Structs: struct arraysCells: cell arrays

Arrays elements are accessed with “( )” (cell arrays also use “{ }”)

Page 7: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Variables

Note that variable names are case sensitive: A ≠ a

To see current variables in MATLAB:>> whos

Page 8: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Examples

Create a vector (number array):>> a = [ 0 1 2 5 ] (brackets)

Create a string (char array):>> b = 'my string’ (single quotes)

Create a cell array:>> c{1} = a (allows mixing of>> c{2} = b various types)OR: >> c = { [ 0 1 2 5 ], ‘my string’ }

Page 9: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

3) Scripts and Functions

Scripts are MATLAB commands saved into a fileExactly equivalent to typing in MATLABAll variables remain after execution

Functions are packaged scripts that operate in their own environments Input in, output outOnly designated output remains

Page 10: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Recommendations

Use scripts for quicker work Easier to debug, when smallCan access all calculated values

Use functions for larger projects and reusable codeLess likely to cause trouble (multiple

definition of variables, interdependencies) “Cleaner” and more easily verified

Page 11: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

How To…

Create a script: Save commands in a file ending with ‘.m’ Note: file must be in the path to execute!

Create a function: as above, but start with a “function” line:

e.g. function myfunc

or function x = myfunc(y)

or function [x1, x2] = myfunc(y1, y2, y3)

Page 12: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

4) Help

Nearly all commands (all built-in, and most others) have documentation

The help command:>> help xyz help on command “xyz”

>> help list of built-in functions

by category

>> lookfor abc search help by keyword

Page 13: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

5) The Debugger

MATLAB’s debugger can suspend a program while it is executing

Way to examine function contents before they are cleared

Most frequent usage:>> dbstop if error Go to debugger

on error>> dbquit Quit debugger

Page 14: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

More Debugger Commands

Other useful debugger commands:>> dbup Examine calling function

>> dbdown Reverse a dbup

>> dbstop in xyz at 123 Stop in function xyz at line 123

>> dbclear all Undo current dbstops

Page 15: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip 1: Continuations

You can continue a line on the next line by ending it with “…”

>> mylongvariable = {‘mylongstring1’, …>> ‘mylongstring2’, ‘etc.’}

(this is particularly helpful in scripts and functions)

Page 16: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip 2: Command Output

You can use “;” to suppress printing of a return value

>> x = 5

x =

5

>> y = 3;

(the second assignment is made quietly)

Page 17: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip 3: Notes on ‘cd’

The ‘cd’ command is used to change directories in MATLAB and in Linux… but it works slightly differently>> cd /home/fmri % cd /home/fmri

(changes to directory in both)>> cd % cd

(prints current directory) (changes to home directory)>> cd(‘/home/fmri’)>> cd(myinputdir)

(also legal, and useful with string variables)

Page 18: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip 4: Shell Commands

You can use Linux commands in MATLAB using “!”

>> ! rm -r mydir

>> ! cp /home/fmri/file1 .

(Note: the current directory is always MATLAB’s current directory)

Page 19: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip (Trick?) 5: Bad Names

Beware of using variable names that “shadow” functions(sometimes MATLAB will alert you…)>> end = 1Error: Illegal use of reserved keyword "end".

(…but often it won’t)>> spm = 5>> spmspm =

5

Page 20: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip 6: Clearing Variables

You can unassign variables with “clear”:>> clear d*(clear variables starting with “d”)

Clearing variables may prevent some problems with scripts>> clear all (clear all variables)

Page 21: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Tip 7: Saving a Session

The ‘diary’ command can save everything printed in the MATLAB window to a file:

>> diary myfile.txt

>> diary on

>> diary off

Page 22: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Programming Fundamentals

» Control - if-then, while loops, and for loops

» Expressions - operators and syntax

» Output – disp

Page 23: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

If-Then Loop Structure

if expr

commands

elseif expr % note: can use repeatedly

commands

else

commands

end

Page 24: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

While Loop Structure

while expr % evaluated each time!

commands

end

Page 25: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

For Loop Structure

for var = values % often 1:N

commands % note: evaluated for

% each value

end

Page 26: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Expression Format

» Expressions are built using operators

» Common operators:&& - logical AND

|| - logical OR (note: two vertical pipe symbols)

== - test of equality (note: = is assignment)

>, <, >=, <= - inequalities

~= and ~ - inequality and negation

() - parentheses can be used for grouping

Page 27: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Example

done = 0;

while ~done

x = myfunc;

if x < 0 || x > 10

done = 1;

end

end

Page 28: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

The disp Command

» The simplest way to print a variable» Note: non-string variables must be

converted to strings:

disp(num2str(x))

» Can also display other text:disp(‘Finished:’)

disp([‘The value of x is ’ num2str(x)])

Page 29: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

First Programming Task

» Try to create a small but non-trivial program as an exercise

» Example:» Ask the user to pick a date in some way» Compare to today’s date and tell the user

how many days until that date comes, or how many days ago it passed

Page 30: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Notes

» Months have different numbers of days… so this seems non-trivial!

» MATLAB functions can help: for example, can use date in MATLAB (it returns a string like ‘10-Apr-08’) and datenum

» How should we ask the user for a date? » A calendar looks nice, but this is hard—it will

introduce days of the week, which we don’t otherwise need

» The menu command can present a list of choices (e.g., ask for a year, a month, and then a day)

Page 31: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Other Sample Learning Projects

» 1. Get historical population data for NH, VT, and some other states from the Wikipedia, save it to a file, and create code to read it into MATLAB. Write a program that gives users menu options to plot population growth graphs and to use an extrapolation to predict what the population might be in a future year.

» New commands to learn: fopen, fread, fclose, plot, hold, legend, polyfit

Page 32: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Other Sample Learning Projects

» 2. Write a simple DICOM browser. The program should be able to search for a given DICOM file pattern and present a list of files to select from. It should allow a user to see particular fields (by calling Linux tools that can read DICOM fields and parsing their output), or print multiple fields in a tabular view.

» New commands to learn: system, listdlg, strfind, strcmp, strrep, sprintf

Page 33: MATLAB A brief introduction to programming. 1)Background and Getting Started Dartmouth College now has a site license

Other Sample Learning Projects

» 3. Implement Mad Libs (Mad Lab version?). Create a set of one or more template files that have markers like %NOUN% to replace key words. Read a random template into MATLAB, then ask the user to input an appropriate set of parts of speech, and display the result of substituting these words for the markers.

» New commands to learn: fopen, fread, fclose, strrep, rand, round, msgbox