Handling Arrays 2/2

Preview:

DESCRIPTION

Handling Arrays 2/2. Numerical Computing with . MATLAB for Scientists and Engineers. You will be able to. Add, delete, permute all or sum of the vectors and matrices , Sort and search matrix elements, Change the shape of the matrix, - PowerPoint PPT Presentation

Citation preview

Handling Arrays 2/2

Numerical Computingwith .

MATLAB for Scientists and Engineers

2

You will be able to

Add, delete, permute all or sum of the vectors and matrices,

Sort and search matrix elements, Change the shape of the matrix, Flip, Rotate and Shift the matrix, Manipulate 2D images

3

Padding a Column

Inserting a column at a larger index than the size automatically fills in-betweens with ze-ros.

11 22 33

44 55 66

77 88 99

a= [1 2 3; 4 5 6; 7 8 9]a= [1 2 3; 4 5 6; 7 8 9] a(:,5)=[8 8 8]'a(:,5)=[8 8 8]'

11 22 33

44 55 66

77 88 99

00

00

00

88

88

88

4

Column Permutation

Use permuted array indexing

11 22 33

44 55 66

77 88 99

aa

112233

445566

778899

b=a(:,end:-1:1)b=a(:,end:-1:1)

1122 33

4455 66

7788 99

c=a(:,[2 3 1])c=a(:,[2 3 1])

5

Reshaping

Change matrix dimensions

11 22 33

44 55 66

77 88 99

aa b=reshape(a,2,6)b=reshape(a,2,6)

11 77 22

44 1010 55

9988

1111

33

66 1212

1010 1111 1212

b=reshape(a,3, [ ] )b=reshape(a,3, [ ] )

11 1010 88

44 22 1111

66

99

77 55 33 1212

6

Replicate Array

Use the given matrix as the tile in order to produce a larger matrix.

b = repmat (a(2:3,:), 2, 2)b = repmat (a(2:3,:), 2, 2)

11 22 33

44 55 66

77 88 99

aa

1010 1111 1212

44 55 66

77 88 99

44 55 66

77 88 99

44 55 66

77 88 99

44 55 66

77 88 99

7

Single Indexing

Looking at a matrix as a vector

sub2ind(size(a),3,2)sub2ind(size(a),3,2)11 22 33

44 55 66

77 88 99

aa

1010 1111 1212

77

b=a(7)b=a(7) 88

1

2

3

4

5

6

7

8

9

10

11

12

1

2

3

4

1 2 3

[r c] = ind2sub(size(a),10)[r c] = ind2sub(size(a),10)

r=2r=2 c=3c=3

8

abs(a) > 1abs(a) > 1

-3-3a=-3:3a=-3:3 -2-2 -1-1 00 11 22 33

11 11 00 00 00 11 11

a(abs(a) > 1)a(abs(a) > 1) -3-3 -2-2 22 33

Logical Values

a(logical([1010111]))a(logical([1010111])) -3-3 -1-1 22 3311

Logical Arrays

9

Scalar Expansion

Filling matrices with a single value

a=3a=3

33

b=a(ones(2,3))b=a(ones(2,3))

33 33

33 33 33

22

b(:) = 2b(:) = 2

22 22

22 22 22

11

b=true(2,3)b=true(2,3)

11 11

11 11 11

11

b(2,2:3)=falseb(2,2:3)=false

11 11

11 00 00

10

Sorting Arrays

Sort the elements in ascending or descend-ing order.

22x=randperm(6)x=randperm(6) 33 55 44 66 11

11xs = sort(x)xs = sort(x) 22 33 44 55 66

66xs = sort(x,'descend')xs = sort(x,'descend') 55 44 33 22 11

[xs,idx]=sort(x)[xs,idx]=sort(x)

11xsxs 22 33 44 55 66

66idxidx 11 22 44 33 55

11

Sorting Matrices

The default is the column-wise sorting.

44

a=floor(10*rand(3,4))a=floor(10*rand(3,4))

22 00 88

88 66 66 55

55 88 33 77

44 22 00 55

55 66 33 77

88 88 66 88

sx=sort(a)sx=sort(a)

00 22 44 88

55 66 66 88

33 55 77 88

sx=sort(a,2)sx=sort(a,2)

for row-wise sortingfor row-wise sorting

12

Sort Using Pivot

Get sorting index and apply permutation.

44

A=floor(10*rand(3,4))A=floor(10*rand(3,4))

22 00 88

88 66 66 55

55 88 33 77

11

33

22

[tmp,idx]=sort(A(:,3))[tmp,idx]=sort(A(:,3))

As = A(idx,:)As = A(idx,:)

idxidx

44 22 00 88

55 88 33 77

88 66 66 55

13

Sub-array Searching 1/2

Substituting all elements larger than 7 to 0

44

A=floor(10*rand(3,4))A=floor(10*rand(3,4))

22 00 88

88 66 66 55

55 88 33 77

11

22

44

[r,c] = find(A>7)[r,c] = find(A>7)

k=find(A>7); A(k)=0k=find(A>7); A(k)=0

cc

22

33

11

rr

44 22 00 00

00 66 66 55

55 00 33 77

14

Sub-array Searching 2/2

First two or last two meeting the condition

find(a>3)find(a>3)

33a=randperm(7)a=randperm(7) 44 66 22 11 77 55

22 33 66 77

find(a>3,2)find(a>3,2) 22 33

find(a>3,2,'last')find(a>3,2,'last') 66 77

15

Minimum and Maximum

The minimum (or maximum) value and the corresponding index

min(a)min(a)

33aa 11 66 22 11 77 55

11

find(a==m)find(a==m) 22 55

[m,i]=min(a)[m,i]=min(a) 11 22m i

max(a)max(a) 77

find(a==M)find(a==M) 66

[M,j]=max(a)[M,j]=max(a) 77 66M j

16

Min / Max of a Matrix

The default is column-wise operation.

a = randn(3,7);b = 10*a;c = floor(b)

a = randn(3,7);b = 10*a;c = floor(b)

11 88 44 66 33 55 88

[m,i]=min(a)[m,i]=min(a)11

11

m

i

min(min(a))min(min(a)) 11

66 88 88 88 22 77 55

33 55 88 66 33 33 33

55 44 66 22 33 33

33 11 11 22 33 33

17

Flipping and Rotating

Matrices can be flipped, rotated and shifted.

11 22 33

44 55 66

77 88 99

aaflipud(a)flipud(a) fliplr(a)fliplr(a)

rot90(a)rot90(a) rot90(a,2)rot90(a,2)

circshift(a,1)circshift(a,1) circshift(a,-1)circshift(a,-1)

circshift(a,[0 1])circshift(a,[0 1]) circshift(a,[0 -1])circshift(a,[0 -1])

18

Upper, Lower and Diagonal Matrix

Various matrices based on the original matrix

11 22 33

44 55 66

77 88 99

aa

d=diag(a)d=diag(a) 11

55

99

c=diag(d)c=diag(d) 11 00 00

00 55 00

00 00 99

11 22 33

00 55 66

00 00 99

11 00 00

44 55 00

77 88 99

U=triu(a)U=triu(a) U=tril(a)U=tril(a)

19

Grayscale Image 1/2

Gray scale image is a 2-D matrix value: 0~256 lovetriangle.mlovetriangle.m

M = imread('lovetriangle.jpg');figure(1), imshow(M);figure(2), imshow(M(5:88,215:335));S = M; % Add photo frameS(1:5,:) = 0; S(end-5:end,:) = 0;S(:,1:5) = 0; S(:,end-5:end) = 0;figure(3), imshow(S);

M = imread('lovetriangle.jpg');figure(1), imshow(M);figure(2), imshow(M(5:88,215:335));S = M; % Add photo frameS(1:5,:) = 0; S(end-5:end,:) = 0;S(:,1:5) = 0; S(:,end-5:end) = 0;figure(3), imshow(S);

Black photoframe

20

Grayscale Image 2/2

Matrix operations apply to grayscale imagesM fliplr(M) triu(M)

M([M<5])=250 circshift(M,[0 160]) flipud(M)

21

Color Image

Color image is a 3-D matrix 2x2 matrix of pixels Each pixel is an [R G B] array R, G, B values: 0~255

squares.msquares.m

S = uint8(zeros(100,100,3));S( 1: 50, 1: 50,1) = 255; % redS( 1: 50,51:100,2) = 255; % greenS(51:100, 1: 50,3) = 255; % blueS(51:100,51:100,1:2) = 255; % yellowfigure(1), imshow(S);

S = uint8(zeros(100,100,3));S( 1: 50, 1: 50,1) = 255; % redS( 1: 50,51:100,2) = 255; % greenS(51:100, 1: 50,3) = 255; % blueS(51:100,51:100,1:2) = 255; % yellowfigure(1), imshow(S);

22

Exercise 1 – Color Photo Frame

Choose any photo you like and add color photo frame outside of the photo. You may choose the color of the photo frame as you like.

23

Solution 1

Script and Screenshotphoto_frame.mphoto_frame.m

24

Exercise 2 – Photo Puzzle

Cut a photo into 2x2 pieces and put them in a random position.

25

Solution 2

Script and Screenshotpuzzle2x2.mpuzzle2x2.m

Recommended