Tải bản đầy đủ - 0 (trang)
7 Tìm kiếm mảng con

7 Tìm kiếm mảng con

Tải bản đầy đủ - 0trang

41

y = x(k)

y=

-3

-2

2

3

Tạo mảng y, dùng các chỉ số trong mảng k.

Hàm find cũng có thể sử dụng trong ma trËn:

>> A = [1 2 3; 4 5 6; 7 8 9]

A=

1

2

3

4

5

6

7

8

9

>> [i,j] = find(A>5)

i=

3

3

2

3

j=

1

2

3

3

ở đây i là chỉ số hàng, còn j là chỉ số cột; giữa i và j có mối quan hệ tơng ứng để chỉ những vị trí mà tại đó biểu thức quan hệ là đúng.

Chú ý: khi MATLAB trả lại hai hoặc nhiều biến, chúng đợc đặt trong dấu

ngoặc vuông, và đợc đặt bên trái dấu bằng. Cú pháp này khác với cú pháp thao

tác đối với mảng ở trên, khi mà [i,j]đợc đặt bên phải dấu bằng, và nó xây

dựng lên một mảng mà j đợc kết nối vào bên phải dấu bằng.

Bảng dới đây tóm tắt dạng lệnh của phần tìm kiếm mảng:

Tìm kiếm mảng

i = find(x)

Trả lại các chỉ số của mảng x nơi mà các phần tử của

nó khác không

[ r, c ] = find(x)

Trả lại chỉ số hàng và chỉ số cột của mảng x nơi mà

các phần tử của nó khác không.

6.8 So sánh mảng

Chúng ta có thể dùng hàm isequal so sánh hai mảng. Thí dụ:

>> A = [1 2 3; 4 5

A=

1

4

7

2

5

8

3

6

9

>> B = A.*(-1).^A

B=

-1

4

-7

2

-5

8



6; 7



8



9]’



42

-3

6

-9

>> C = 1:9

dạng khác.

1

2

3

>> isequal(A,C)

ans=

0

>> isequal(A,B)

ans=

0

>> isequal(A,A)

ans=

1

>> isequal(C,C)

ans=

0



% Tạo mảng có cùng giá trị với A nh ng có khuôn

4



5



6



7



8



9



Hàm isequal trả lại giá trị logic là đúng (1) khi hai mảng có cùng kích cỡ, các

phần tử giống nhau. Ngoài ra nó trả lại giá trị là sai (0).

Thêm vào đó, hàm ismember chỉ ra các phần tử giống nhau giữa hai mảng:

% Kết quả trả về là vector cột.



>> ismember(A,B)

ans=

0

1

0

1

0

1

0

1

0

>> ismember(A,B)

ans=

1

1

1

1

1

1

1

1

1



ismember trả lại giá trị đúng cho những chỉ số ở trong A mà phần tử này

cũng có ở trong đối số thứ hai. Hai đối số không cần có cùng kích cỡ.

>> x = 0:2:20

x=

0

2

4



% mảng với 11 phần tử.

6



8



10



12



14



16



18



20



43

>> ismember(x,A)

ans=

0

1

1

1

1

0

0

0

0

đây là mảng có cùng kích cỡ với x, với 1 tại các phần tử chung.

>> ismember(x,A)

ans=

0

1

0

1

0

1

0

1

0



0



0



Đây là mảng có số phần tử bằng số phần tử của A, với 1 tại các phần tử

chung. Vì vậy ismember so sánh đối số thứ nhất của nó với đối số thứ hai và

trả lại một vector có cùng số phần tử với đối số thứ nhất.

Những hàm tạo khác trong th viện MATLAB:

>> union(A,B)

% Tất cả các phần tử có trong hai mảng.

ans=

-9

-7

-5

-3

-1

1

2

3

4

5

6

7

8

9

>> intersect(A,B)

% Phần tử chung của hai mảng.

ans=

2

4

6

8

>> setdiff(A,B)

% Các phần tử có trong A nhng không có trong B.

ans=

1

3

5

7

9



44

>> setxor(A,B)

% Các phần tử không thuộc phần chung giữa A và

B.

ans=

-9

-7

-5

-3

-1

1

3

5

7

9

Những hàm này đợc tổng kết lại trong bảng dới đây:

So sánh mảng

isequal(A, B)

ismember(A, B)



Đúng nếu A và B giống nhau.

Đúng khi phần tử của A cũng là phần tử của

B.

Các phần tử chung giữa A và B.

Các phần tử có trong A mà không có trong

B.

Các phần tử không thuộc phần chung giữa

A và B.

Tất cả các phần tử có trong A và B.



intersect(A, B)

setdiff(A, B)

setxor(A, B)

union(A, B)

6.9 Kích cỡ của mảng



ở phần trớc chúng ta đã biết lệnh who cung cấp tên biến do ngời dùng định

nghĩa. Trong trờng hợp của mảng, nó còn rÊt quan träng khi biÕt kÝch cì cđa

m¶ng. Trong MATLAB, lệnh whos cung cấp những thông tin này:

>> whos

Name

size

Bytes Class

A

3x3

72 double array

B

1x3

24 double array

ans

1x4

32 double array

Grand total is 16 elements using 128 bytes



(logical)



Thêm vào đó để đánh số và kích cỡ của biến, whos hiển thị tổng số bytes

đã chiếm, và class của các biến. Ví dụ, ở thông tin đề cập trên, ans là mảng

logic

Trong những trờng hợp mà kích cỡ của ma trận hoặc của vector không đợc

biết nhng nó cần thiết cho một số các thao tác, MATLAB cung cÊp hai hµm øng

dơng lµ size vµ length :

>> A = [1 2 3

>> s = size(A)

s=



4; 5



6



7



8];



45

2



4



Víi một thông số ra, hàm size trả lại một vector hàng trong đó có hai phần

tử, phần tử thứ nhất là chỉ số hàng, còn phần tử thứ hai chỉ số cột.

>> [r,c] = size(A)

r=

2

c=

4

Với hai thông số đa ra, hàm size trả lại số hàng ở trong biến thứ nhÊt, vµ sè cét

ë trong biÕn thø hai.

>> r = size(A,1)

r=

2

>> c = size(A,2)

Gọi hai thông số, hàm size chỉ trả về số cột hoặc số hàng.

>> length(A)

ans=

4

Trả về giá trị số hàng hoặc số cột, giá trị nào lớn hơn đợc trả về.

>> B = pi:0.01:2*pi;

>> size(B)

ans=

1

315

Cho biết rằng B là vector hàng, và

>> length(B)

ans=

315

trả lại độ dài của vector.

>> size([ ])

chỉ ra rằng ma trận rỗng không có kích cỡ.

Những khái niệm này đợc tổng kết trong bảng dới đây:

Kích cỡ của mảng

whos

s = size(A)

[ r, c ] = size(A)

r = size(A, 1)

c = size(A, 2)

n = length(A)



HiÓn thị các biến, mà tồn tại trong không gian làm việc

và kích cỡ của chúng.

Trả lại vector hàng s, mà phần tử thứ nhất là số hàng của

A, phần tử thứ hai là số cột của A.

Trả lại hai số vô hớng r, c chứa số hàng và số cột của A.

Trả lại số hàng của A trong biến r.

Trả lại số cột của A trong biến c.

Trả lại max(size(A)) trong biến n khi A không rỗng.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

7 Tìm kiếm mảng con

Tải bản đầy đủ ngay(0 tr)

×