EGR 106 – Week 2 – Arrays & Scripts
Brief review of last week Arrays:
– Concept– Construction– Addressing
Scripts and the editor Audio arrays Textbook 2.1-2.6, chapter 4.1-4.3
Review of Last Week
Variables: placeholders for numerical data– equal sign is an assignment operator – naming restrictions (not pi, etc. ) – can be complex valued ( x = 3 + 7 i )
Basic math on numbers and variables:
+ – * / ^
Array Concept
The fundamental data unit in Matlab– Rectangular collection of data– All variables are considered to be arrays
Data values organized into rows and columns
4 5 3 91 0 4 6 6 2 01 8 -3 2 0
y ie ld =
Size or dimension of an array:– number of rows and columns– written as R by C or R x C
where R = number of rows
C = number of columns
e.g.
yield is 3 by 4
test is 1 by 5
4 5 3 91 0 4 6 6 2 01 8 -3 2 0
y ie ld =
4 5 3 5 0 te s t =
Names for special sizes– scalar: 1 x 1 array 4 or [4]
– row vector: 1 x C array
[ 9 7 5 4 2 ] is a 1 x 5 row vector
– column vector: R x 1 array
is a 3 x 1 column vector
134
– matrix: R x C array with R > 1, C > 1
If R = C square matrix– each row must have the same number of entries
If R = C = 0 null matrix [ ] (a pair of empty brackets)
4 5 31 0 4 6 61 8 -3 2
Array Construction
Direct specification:– Name followed by an equal sign ( = ),
just like variables– List values within a pair of brackets ( [ ] )– Enter data one row at a time
left to right, top to bottom order space or comma between the values rows separated by semicolons or the enter key
– For example, to get
type
b = [ 4,5,3,9; 10,4,66,20; 18,-3,2,0 ]
or
b = [ 4, 5, 3, 9
10, 4, 66, 20
18, -3, 2, 0 ]
4 5 3 91 0 4 6 6 2 01 8 -3 2 0
b =
enter
enter
enter
enter
– Can use simple math operations as well as numerics as the entries:
– Note the common format of all entries in the response (exp(1) = e = 2.71828, log10(100) = 2, 2-12 = 0.00024414)
– MATLAB scales the exponent to the largest entry !!
Concatenation – gluing arrays together
if a = [ 1 2 3 ] b = [ 4 5 6 ]
– Attaching left to right – use a comma
[ a, b ]
– Attaching top to bottom – use a semicolon
[ a; b ] 1 2 3 4 5 6
1 2 3 4 5 6
semicolon
comma
– Note that sizes must match for this to work:
if a = [ 1 2 3 ] then
[ a, b ] = ?? [ a; b ] = ??
– Size needs for concatenation:# of rows the same for side by side (comma)# of columns the same for top to bottom
(semicolon)
4 51 0 4
b =
Evenly spaced vectors – the colon operator
first : increment : maximum
yields a row vector of equally spaced values– examples:
0 : 2 : 10 [ 0 2 4 6 8 10 ]
1 : 5 [ 1 2 3 4 5 ]
7 : -2 : -3 [ 7 5 3 1 -1 -3 ]
1 : 2 : 8 [ 1 3 5 7 ] – default for increment is 1
Note – does not hit 8!!Recall Assignment 1, #10
xv = –3:0.1:3;
Addressing
We indicate a particular element within an array by it’s row/column position:
– use parentheses after the array name– e.g. yield(2,4)
4 5 3 91 0 4 6 6 2 01 8 -3 2 0
y ie ld =
How about more than one entry? Can specify a rectangular sub-array
– again, use parenthesis after the array name– list desired rows, comma, desired columns
as separate vectors, typically in brackets – e.g.
yield([1 2],[3 4])
4 5 3 91 0 4 6 6 2 01 8 -3 2 0
y ie ld =
Rules of the road for arrays:– Symbols to use:
brackets to glue elements together to make an array (left to right or top to bottom)
comma (or space) and semicolon (or enter) for separating column/row elements
parentheses after the array name for addressing
– Be careful to match array sizes– Remember – rows first, then columns in
addressing
Scripts – Simple Programs
So far, commands have been typed in the command window: – Executed by pressing “enter”– Edited using the arrow keys or
the history window
Script (m-file) Concept
A file containing Matlab commands – Can be re-executed – Is easily changed/modified or e-mailed to someone
Commands are executed one by one, sequentially– File is executed by typing its name (without .m)– Results appear in the command window (or use ; )
Can be created using any text editor – .m extension– Listed in Current Directory window
Matlab’s Built-in, Color Editor: – Can create a new file
or open an existing
M file (icons or click
on file name)– Color used to aid in
file creation
(command types,
typos, etc.)
– typical Windows menu– line numbers – “run” button or F5 – debug capability
– comment lines – note use of semicolons– note use of colors
How scripts can get data:
– From arrays in the current workspace– From arrays defined in the script– Using the “input” command:
Numeric:
x = input(' how many? ') String:
x = input(' name? ', 's')
How scripts can show data:
– Command of the array name– Using the display command:
Existing array (a single array only – if necessary, use [ ] !!)
disp(x) or disp([x y]) Text
disp(' The task is done ')
Example:
Note that disp shortens the resulting output by dropping the array name and removing blank lines
Other useful script commands:
– clc – clears the command window
– pause – stops operation and waits for a key press
– pause(n) – stops operation and waits for n seconds
Audio Arrays (not in the book!)
MatLab can interface to microphones and speakers through the computer’s sound card (sampled and digitized) ….e.g. “maple”
– Matlab represents sounds using arrays (actually, as column vectors)
– Equipment needed:MicrophoneSpeakers
and software:2 Matlab scripts:
init_sound.m
sound_in.m
Headsets available in ECC
Files available on the egr106 website; save them in your “work” directory
– How to use them: Connect headset (is it muted?)Type init_sound at the command prompt (only
needed once per session)Type sound_in at the command prompt to
record 1 second of sound (waits for your input)
generates array named “data”Type sound(data,10000) at the prompt to
play array “data” – Can plot “data”, manipulate “data” before replaying,
etc.
init_sound – sets up MATLAB to sound card interface
sound_in – prompts you to speak and records one second of input
sound(.,.) – a regular MatLab function
What are these tools?