4. Arrays

Array Subscripts

Given an array, you may need to access only one or some of the individual elements contained in the array, rather than the whole array itself. If A is an array with n elements in it, and i is an integer such that , then in Matlab A(i) is the th element in the array (often denoted by Ai in mathematics).

To illustrate this, enter the following into an M-file and then execute it. Firstly you will construct an array containing 9 random numbers between 0 and 1. Then you will use these elements of A to introduce scalar variables or new arrays which are merely sub-arrays of A. In each case the new variable names before the “=” signs have been suggested so that you can read the output conveniently. Please study carefully the expressions following the “=” signs as they are commonly used.

A=rand(1,9)

% the next two lines define scalar variables

a1=A(1)

a7=A(7)

% the remaining lines define new arrays

a3456=A(3:6)

a1357=A(1:2:7)

a852=A(8:-3:2)

Exercise 1: After executing the above M-file, what would you expect to see if you now entered each of the following after the prompt? Because we have not allocated a variable name for either expression, both of course will be named ans by default.

a852(3)

a1357(2:3)

Exercise 2: The MATLAB command

Q=linspace(0,100,141);

creates an array which has 140 subintervals and 141 points. Print out only

  • the 46th element of Q
  • the first four elements of Q
  • the last three elements of Q.

 

Special array functions: sum, prod, length, max, min, sort, find, diff

The functions sum, prod, length, max, min, sort, find of an array are self explanatory by creating and executing the following in an M-file (do not type in the comment statements). diff(Z) is a new array containing the differences between consecutive elements of Z.

clear all

% create an array with 11 elements,

% each of which is a random number between 0 and 5

Z=5 * rand(1,11)

Zsum=sum(Z)

Zprod=prod(Z)

Zlength=length(Z)

% ’max’ finds the maximum value and its subscript (index) number

[Zmax,i] = max(Z)

[Zmin,j] = min(Z)

% ’sort’ and ’find’ create new arrays

Znew=sort(Z)

Zbig=find(Z>3.0) % for example, finds subscripts where Z(i) is >3.0

Znewbig=find(Znew>3.0) % have now moved to end of array