Phép tốn với vector và ma trận trong Matlab

Một phần của tài liệu Nghiên cứu, sử dụng cánh tay robot mitsubishi vào đào tạo kỹ sư cơ điện tử, đh nha trang (Trang 56 - 153)

- Trang Trang Trang Trang

3.1.3. Phép tốn với vector và ma trận trong Matlab

a). Các tốn tử

-Trong Matlab, khơng cần khai báo biến. Matlab phân biệt biến chữ hoa và thường

Ví dụ: A và a là hai biến khác nhau

-Các phép tốn số học: +,-,*,/,\(chia đảo), ^. -Các tốn tử quan hệ :< , <= , > , >= , == , ~= -Các tốn tử logic : & , | (or) , ~ (not)

-Các hằng : pi 3.14159265

b). Làm việc với vector và ma trận

-Trong Matlab, tất cả các đối tượng đều xem là ma trận. Một chữ số là một ma trận 1*1 Một vector là ma trận một hàng hay một cột. Ví dụ: >> a=[5 10 2;10 2 4; 2 4 5] a = 5 10 2 10 2 4 2 4 5

-Chỉ số : Phần tửở hàng i cột j của ma trận cĩ kí hiệu là A(i,j). Tuy nhiên ta cũng cĩ thể tham chiếu tới phần tử của mảng nhờ một chỉ số A(k). Ví dụ: A(6) là tham chiếu của A(3,2).

-Tốn tử “:” là một tốn tử quan trọng, xuất hiện ở nhiều dạng khác nhau Ví dụ: >> 5:10

ans =

- TrangTrangTrangTrang 57575757 - >> 1:2:10 ans= 1 3 5 7 9 * A(:,j)để trích ra cột thứ j của A * A(i,:)để trích ra hàng thứ i * A(k:l,m:n) trích ra ma trận con của A * V(i:j) trích ra một phần vector V Ví dụ: >> A=[2 4 6; 1 3 5; 3 1 4]; >> A(3,:) ans = 3 1 4 -Chuyển vị: Dùng dấu ’ để tạo ma trận chuyển vị Ví dụ: >>a=[1 3; 2 4] a = 1 3 2 4 >> a’ ans = 1 2 3 4 -Phép tốn số học với ma trận: Cộng, trừ ma trận: >> a=[2 3]; >> b=[1 2]; >> a+b ans = 3 5 Nhân hai ma trận: >> a*b’ ans = 8 >> a*b ans = 2 6

Chia các thành phần của ma trận này cho một ma trận khác: >> a/b

ans =

- TrangTrangTrangTrang 58585858 - Lũy thừa của ma trận: >> a.^2 ans = 4 9 >> c=[1 2; 3 4]; >> c^2 ans = 7 10 15 22 -Ma trận đặc biệt: * zeros(m,n): ma trận tồn 0. * eye(n):ma trận đơn vị. * ones(m,n): Ma trận tồn 1. 3.1.4. Matlab guide

3.1.4.1. Khởi động giao diện GUI

- Gui là giao diện bằng hình ảnh của chương trình.

- Gui bao gồm các nút nhấn, hộp liệt kê, thanh trượt, menu… chúng cung cấp cho người dùng sử dụng một mơi trường làm việc thân thiện để họ tập trung vào các ứng dụng của chương trình hơn là đi tìm hiểu cách thức làm việc của chương trình đĩ.

- Mở phần mềm Matlab, gõ lệnh sau vào cửa số Command.

>> guide

Trong cửa sổ GUIDE Quick Start cĩ nhiều lựa chọn theo một trong các khung mẫu sau:

- TrangTrangTrangTrang 59595959 -

Hình 3.1: Cửa số GUIDE.

- Create New GUI: Tạo hộp thoại GUI mới theo một trong các loại sau:

- Blank GUI (Default): Hộp thoại GUI trống khơng cĩ một điều

khiển Uicontrol nào cả.

- GUI with Uicontrols: Hộp thoại GUI với một vài Uicontrol như

button, … Chương trình cĩ thể chạy ngay.

- GUI with Axes and Menu: Hộp thoại GUI với một Uicontrol axes

và button, các menu để hiển thịđồ thị.

- Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No.

- Open Existing GUI: mở một project cĩ sẵn.Trong hướng dẫn này, các bạn tạo một project mới nên sẽ chọn Blank GUI.

- TrangTrang 60TrangTrang 606060 -

3.1.4.2. Cửa số GUI hiện ra

Hình 3.2: Cửa số biên soạn GUI.

Giao diện rất giống với các chương trình lập trình giao diện như Visual Basic, Visual C++, … Các bạn di chuyển chuột qua các biểu tượng ở bên trái sẽ thấy tên của các thanh cơng cụ điều khiển. Xin nĩi qua một vài cơng cụ điều khiển hay dùng:

- Push Button: Là một nút nhấn, giống như nút Command Button trong VB. Là các nút bấm như nút OK, Cancel mà ta vẫn bấm.

- Toggle button: Là một nút bật giống như push button nhưng cĩ hiện thị trạng thái thay đổi mỗi khi nhấn nút.

- Radio Button: Nút nhỏ hình trịn để chọn lựa.

- Check Box: Là hộp kiểm tra cho phép đưa vào các chọn lựa khi bấm chuột vào nĩ.

- Edit Text: Là hộp văn bản đưa chuỗi ký tự vào đĩ.

- Static Text: Dịng văn bản dùng đểđặt nhãn, tiêu đề, hướng dẫn.

- Pop-up Menu: Menu sổ xuống trình bày một bảng các chọn lựa khi nhấp chuột vào.

- TrangTrangTrangTrang 61616161 -

- Axes: Vẽ hệ trục.

- Slider : Thanh trượt dùng đểđưa giá trị vào trong một vùng giới hạn.

- Run (Ctr + T) : nhấn vào để chạy chương trình mà ta đã viết. Cĩ lỗi là hiện ra ngày.

- Align Object: dùng để làm cho các điều khiển sắp xếp gọn đẹp theo ý mình như cùng căn lề bên trái, …

- Grid and Rulers : dùng để cấu hình về lưới trong giao diện vì nĩ sẽ coi giao diện như một ma trận các ơ vuơng nhỏ, ta sẽ thay đổi giá trị này để cho các điều khiển cĩ thể thảởđâu tùy ý cho đẹp.

- Menu Editor : trình này để tạo menu cho điều khiển

- Tab Order Editor : sắp xếp Tab order là thứ tự khi ta nhấn phím Tab - Gui Options : lựa chọn cho giao diện GUI.

- Các bạn save dưới tên: “ TEN”, khi đĩ đồng thời xuất hiện cửa sổ Editor và đang mở file TÊN.m của bạn. Trong thư mục bạn save sẽ cĩ 2 file là:

- TEN.fig : file này chứa giao diện của chương trình

- TEN.m : file chứa các mã thực thi cho chương trình như các hàm khởi tạo, các hàm Callback….

3.1.4.3. Thay đổi thuộc tính điều khiển

Nhấp chuột vào Component trong vùng layout để soạn tính chất của component. Ví dụ: Nhấn chuột vào Edit text, sẽ hiện ra cửa sổ Property Inspector.

- Tag: dùng để đặt tên cho component.

- BackgroundColor: màu nền của component. - ForegroundColor: màu chữ trên component.

- FontName, fontAngle,fontSize, fontWeight: các đặt tính font chữ trên component.

- String: văn bản hiển thị trên component.

- Enable: cho phép component hoạt động hay khơng. - Visible: hiển thị component hay khơng.

- TrangTrangTrangTrang 62626262 -

Hình 3.3: Cửa sổ thuộc tính.

- Quan trọng nhất đối với các component là hàm Callback, tức là hàm con mà file áp dụng *.m sẽ gọi khi ta tác động vào component. Để soạn thảo callback ở cửa số layout nhấp chuột phải vào component muốn soạn thảo sau đĩ chọn View callbacks => Callback ta sẽ vào màn hình soạn thảo Callback cho component đĩ. Lưu ý rằng các dịng lệnh sẽ được viết sau dịng “ function tên component_Callback(hobject,eventdata, handles). Sau khi soạn thảo xong ta lưu, lập tức Matlab sẽ lưu thành hai file cĩ cùng tên nhưng khác nhau về phần mở rộng:

- File cĩ phần mở rộng *.fig chứa nội dung của giao diện

- TrangTrang 63TrangTrang 636363 -

3.1.5. Cơ bn vềảnh và các hàm xnh trong Mtalab 3.1.5.1. Các kiểu ảnh trong matlab 3.1.5.1. Các kiểu ảnh trong matlab

a). Ảnh Index(Ảnh chỉ mục)

Ảnh được biểu diễn bởi hai ma trận, một ma trận dữ liệu ảnh X và một ma trận màu (cịn gọi là bản đồ màu) map. Ma trận dữ liệu cĩ thể thuộc kiểu uint8, uint16 hoặc double. Ma trận màu là một ma trận kích thước m x 3 gồm các thành phần thuộc kiểu double cĩ giá trị trong khoảng [0 1]. Mỗi hàng của ma trận xác định thành phần red, green, blue của một màu trong tổng số m màu được sử dụng trong ảnh. Giá trị của một phần tử trong ma trận dữ liệu ảnh cho biết màu của điểm ảnh đĩ nằm ở hàng nào trong ma trận màu.

Hình 3.4: Ảnh Index.

- TrangTrang 64TrangTrang 646464 -

b). Ảnh xám(grayscale)

Mỗi ảnh được biểu diễn bởi một ma trận hai chiều, trong đĩ giá trị của mỗi phần tử cho biết độ sang (hay mức xám) của điểm ảnh đĩ. Ma trận này cĩ thể một trong các kiểu uint8, uint16 hoặc double. Ảnh biểu diễn theo kiểu này cịn gọi là ảnh xám.

Hình 3.5: Ảnh xám.

c). Ảnh nhị phân

Ảnh được biểu diễn bởi một ma trận hai chiều thuộc kiểu logical. Mỗi điểm ảnh chỉ cĩ thể nhận một trong hai giá trị là 0 (đen) hoặc 1 (trắng).

- TrangTrangTrangTrang 65656565 -

d). Ảnh màu RGB

Cịn gọi là ảnh “truecolor” do tính trung thực của nĩ. Ảnh này được biểu diễn bởi một ma trận ba chiều kích thước m x n x 3, với m x n là kích thước ảnh theo pixels. Ma trận này định nghĩa các thành phần màu red, green, blue cho mỗi điểm ảnh, các phần tử của nĩ cĩ thể thuộc kiểu uint8, uint16 hoặc double.

- TrangTrang 66TrangTrang 666666 -

3.1.5.2. Các hàm xử lý cơ bản trong matlab

a). Đọc và ghi dữ liệu ảnh

* Hàm imread: đọc các file ảnh với bất kỳ các định dạng ảnh đã biết hiện nay và lưu lại dưới dạng một ma trận biểu diễn ảnh trong Matlab.

Cú pháp : A=imread(filename,fmt)

* Hàm imwrite: cho phép lưu một ảnh biểu diễn bằng một ma trận trong Matlab thành một file ảnh dưới một trong các định dạng đã biết.

Cú pháp : imwrite(A,filename,fmt)

* Hàm imfinfo: dùng để xem các thơng số của một file ảnh nào đĩ. Cú pháp :imfinfo(filename,fmt)

Các thơng tin được cung cấp bởi hàm imfinfo là : filename, filemoddate, filesize, format,formatversion, width, height, bitdepth, colortype.

b). Chuyển đổi giữa các kiểu dữ liệu, kiểu ảnh

Matlab cung cấp sẵn các hàm thực hiện chuyển kiểu cho các ma trận biểu diễn ảnh, bao gồm : im2double, im2uint8 và im2uint16. Tuy nhiên, khi thực hiện chuyển kiểu giữa các dữ liệu ảnh cần lưu ý một sốđiều sau:

* Khi chuyển từ một kiểu dữ liệu dùng nhiều bit sang một kiểu dữ liệu dùng ít bit hơn thì một số thơng tin chi tiết về bức ảnh ban đầu sẽ bị mất.

* Khơng phải lúc nào cũng cĩ thể chuyển đổi kiểu dữ liệu đối với kiểu ảnh indexed, vì các giá trị của ma trận ảnh xác định một địa chỉ trong bản đồ màu chứ khơng phải là giá trị màu, do đĩ khơng thể lượng tử hĩa được.

Hàm Ý nghĩa

gray2ind Tạo ảnh index từảnh gray(ảnh xám).

ind2gray Tạo ảnh xám từảnh index.

rgb2gray Tạo ảnh xám từảnh màu.

rgb2ind Tạo ảnh nhị phân từảnh màu.

Bảng 3.1: Chuyển đổi giữa các kiểu ảnh.

c). Cách hàm hiển thị ảnh trong Matlab

Matlab cung cấp hai hàm hiển thị cơ bản là imageimagesc. Ngồi ra cịn cĩ hai hàm hiển thị ảnh khác, đĩ là imviewimshow.

* Hàm image(X,Y,C) hiển thị hình ảnh biểu diễn bởi ma trận C kích thước M x N lên trục tọa độ hiện hành. X, Y là các vector xác định vị trí các pixel C(1,1) và C(M,N) trong hệ trục hiện hành.

* Hàm imagesc cĩ chức năng tương tự như hàm image, ngoại trừ việc dữ liệu ảnh sẽđược co giãn để sử dụng tồn bộ bản đồ màu hiện hành.

- TrangTrangTrangTrang 67676767 -

* Hàm imview cho phép hiển thị hình ảnh trên một cửa sổ riêng, nền Java, gọi là image Viewer. Image Viewer cung cấp các cơng cụ dị tìm và xác định các giá trị pixel một cách linh hoạt.

* Hàm imshow cũng tạo một đối tượng đồ họa thuộc loại image và hiển thị ảnh trên một figure. Hàm imshow sẽ tựđộng thiết lập các giá trị của các đối tượng image, axes và figure để thể hiện hình ảnh.

3.1.6. Phân tích thành phn chính PCA

3.1.6.1. Sơ lược về phân tích thành phần chính PCA

Phân tích thành phần chính (Principal Component Analysis - PCA) được trình bày theo nhiều quan điểm khác nhau. Với các nhà thống kê cổ điển thì PCA là tìm các trục chính của ellipsoid nhiều chiều bao hàm đám mây số liệu phân phối chuẩn nhiều chiều, các trục đĩ được ước lượng từ một mẫu n cá thể, trên mỗi cá thể người ta đo p chỉ tiêu. Người đầu tiên đưa ra kỹ thuật này là H.Hotelling (1933), sau đĩ là T.W.Anderson (1958) và A.M.Kshirsagar (1972).

Với các nhà nhân tố học cổđiển thì kỹ thật này là phương pháp phân tích nhân tố trong trường hợp đặc biệt, khi các phương sai này bằng khơng hoặc xấp xỉ bằng khơng. Phương pháp này thường được sử dụng trong phân tích tâm lý, do Horst (1965) và Harman (1966) đề xuất. Sau cùng, theo quan điểm phổ biến hơn cả của các nhà phân tích số liệu thì PCA là một kỹ thuật biểu diễn các số liệu một cách tối ưu theo một tiêu chuẩn đại số và hình học đặc biệt. khi sử dụng kỹ thuật này người ta khơng địi hỏi một giả thuyết thống kê hoặc một mơ hình đặc biệt nào. Quan điểm này trở nên phổ biến từ khi cĩ máy tính điện tử, và là quan điểm mới nhất. Những tư tưởng của phương pháp này do K.Pearson (1901) đề xuất. Trong cơng trình của C.R Rao (1964) nội dung lý thuyết của phương pháp PCA được trình bày khá đơn giản và rõ ràng. Lĩnh vực ứng dụng của phương pháp PCA rất rộng trong cơng nghiệp, nơng nghiệp, kinh tế, khoa học cơ bản… với bảng số liệu mà các cột là các biến và các dịng là các cá thể, trên đĩ đo giá trị của biến.

3.1.6.2. Thuật tốn phân tích thành phần chính PCA

Giả sử tập huấn luyện cĩ P ảnh, khi đĩ ta sẽ cĩ P vector: T1, T2, …, TP. Tính vector ảnh trung bình : 1 1 p i i m T p = = ∑

- TrangTrang 68TrangTrang 686868 -

Sự khác biệt giữa những khuơn mặt với ảnh trung bình là những vector:

Ai = Ti - m ; i= 1….P, A =[A1 A2 …..AP]

Ý tưởng của việc phân tích thành phần chính là tìm một tập những vector trực chuẩn Uk sao cho những vector này mơ tả tốt nhất sự phân bố những vector ảnh trong khơng gian.

Những vector Uk và giá trị vơ hướng λk chính là những vector riêng và trị riêng

tương ứng của ma trận AA’ (A’ là ma trận chuyển vị của ma trận A). .

Ta thấy ma trận A cĩ kích thước M*N × P, cịn ma trận AA’ cĩ kích thước M*N×M*N, do kích thước ma trận này quá lớn nên ta khơng thể tìm được những vector riêng và những trị riêng trực tiếp được, thay vào đĩ ta sẽ tìm những vector riêng của ma trận A’A cĩ kích thước P×P.Nếu v là một vector riêng của A’A và

λ là trị riêng tương ứng, khi đĩ ta cĩ:

A Av' = λvA AAv' = λAv

tức là Av là một trị riêng của ma trận AA’.

Thơng thường ta chỉ lấy một số Q vector riêng ứng với Q trị riêng cĩ giá trị lớn nhất.

Sau khi cĩ các vector riêng của ma trận AA’ , ta sẽ chuẩn hĩa chúng để thu được một cơ sở trực chuẩn của khơng gian ảnh .

◙ Đặt L= A’A , tìm V là tập hợp các vector riêng của L, D là tập hợp các trị riêng tương ứng . V bao gồm Q vector riêng ứng với những trị riêng lớn hơn một giá trị nào đĩ hoặc ứng với Q trị riêng lớn nhất trong D.

E = Av là tập các vector riêng của AA’.E là ma trận M*N×Q, mỗi cột là một vector riêng.Chuẩn hĩa các vector cột trong E (chia mỗi vector cho độ dài của vector đĩ).

Bây giờ, ta cĩ thể coi E là một cơ sở trực chuẩn của khơng gian ảnh.

Với H là bức ảnh cĩ cùng kích thước với những bức ảnh trong tập huấn luyện. H được xem là một vector trong khơng gian M*N chiều.

◙Đặt K= H - m với m là vector ảnh trung bình.

◙ Tìm C=E’K là tọa độ của hình chiếu Kf của K lên khơng gian ảnh.

Với Ai là một cột trong ma trận A (tương ứng với bức ảnh Ti trong tập huấn luyện). Ta tính:

Ci=E’Ai là tọa độ của hình chiếu Aif của Ai lên khơng gian ảnh.

Một phần của tài liệu Nghiên cứu, sử dụng cánh tay robot mitsubishi vào đào tạo kỹ sư cơ điện tử, đh nha trang (Trang 56 - 153)