Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 102 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
102
Dung lượng
1,11 MB
Nội dung
CHƯƠNG CÁC KHÁI NIỆM CƠ BẢN VỀ MATLAB 1.1 MỞ ĐẦU MATLAB, có nguồn gốc từ chữ matrix laboratory, ngôn ngữ máy tính dùng để tính toán kỹ thuật Ban đầu MATLAB lập để giải phép tính ma trận, điều khiến cho MATLAB có ứng dụng lớn nhiều ngành kỹ thuật khác so với ngôn ngữ lập trình khác tính toán số vô hướng MATLAB kết hợp tính toán với lập trình đồ họa môi trường phát triển tương tác, thời gian lập trình phần nhỏ so với thời gian lập trình ngôn ngữ khác nhờ vào hàm có sẵn MATLAB sản phẩm công ty The Mathworks, Inc với địa www.mathworks.com sử dụng MATLAB phải có quyền, nhiên có nhiều hàm Matlab viết người sử dụng (third party) phổ biến miễn phí mạng giúp cho MATLAB ngày phong phú Sức mạnh MATLAB dựa phần chính: Môi trường phát triển: gồm công cụ tiện nghi giúp viết chương trình, sử dụng hàm Matlab file - Thư viện hàm toán học MATLAB: bao gồm từ hàm sơ cấp tính tổng, sin, tính số phức hàm phức tạp hàm Bessel, nghịch đảo ma trận, tính trị riêng, biến đổi Fourier nhanh, wavelet… - Ngôn ngữ MATLAB: gồm lệnh cấp cao xử lý mảng/ ma trận, lệnh rẽ nhánh, lập vòng, xuất nhập, cấu trúc liệu, lập trình hướng đối tượng… Xử lý đồ họa: dùng lệnh cấp cao để hiển thị liệu dạng đồ họa hai chiều ba chiều, hoạt hình, xử lý ảnh Cho phép ngưởi dùng viết chương trình giao diện đồ họa người dùng GUI (graphical user interface) - Thư viện API MATLAB: cho phép viết chương trình C Fortran liên kết với MATLAB, chương trình MATLAB gọi chương trình viết ngôn ngữ khác hay chương trình viết ngôn ngữ khác gọi hàm thư viện liên kết động tạo công cụ MATLAB - Các hộp dụng cụ : hộp dụng cụ (toolbox) tập hợp hàm MATLAB viết sẵn để giải vấn đề thuộc chuyên ngành ví dụ xử lý tín hiệu, xử lý ảnh, điều khiển, logic mờ , mạng nơrôn, robot… Nhờ toolbox mà lãnh vực áp dụng MATLAB rộng, bao gồm ngành Kỹ thuật điện - Điện tử, Điều khiển tự động, Viễn thông, Cơ khí, Động lực,… Các toolbox MATLAB ngày bổ sung theo phát triển khoa học kỹ thuật Nhiều toolbox quan nghiên cứu, trường Đại học (third party) viết riêng bổ sung vào toolbox hãng Bên cạnh khả tính toán mạnh, MATLAB liên kết với ngôn ngữ lập trình khác Visual TS NGUYỄN ĐỨC THÀNH Basic, Visual C, Delphi giao tiếp thời gian thực với thiết bị ngoại vi máy tính thông qua cổng song song, cổng nối tiếp hay card ISA, PCI Theo thời gian từ năm 1984 đến nay, có nhiều phiên MATLAB đời, tài liệu dựa MATLAB 6.5 R13 chạy Windows 98 trở lên Để thuận tiện cho việc sử dụng, MATLAB có trợ giúp phong phú menu Help, hay file PDF đóa CD MATLAB Help trợ giúp trực tuyến Việc nghiên cứu MATLAB dễ dàng nhanh chóng bạn ngồi trước máy tính chạy MATLAB đọc sách nhỏ 1.2 BƯỚC ĐẦU CHẠY MATLAB Khi chạy MATLAB, hình (desktop) xuất bao gồm cửa sổ: - Cửa sổ Lệnh (Command window): với dấu nhắc >> dùng để chạy lệnh MATLAB, viết chương trình, chạy chương trình…Có số lệnh tổng quát liên quan đến cửa sổ sau: clc: xoá cửa sổ Lệnh home: di chuyển chạy lên góc trái cửa sổ(khi chạy chương trình) help: trợ giúp thông tin mục echo, echo on/off: tắt mở hiển thị dòng file m chạy chương trình edit: gọi chương trình soạn file *.m type tên_file: đọc nội dung file *.m demo: gọi chương trình demo quit, exit: thoát chương trình MATLAB Ngoài có số phím hổ trợ thao tác liệt kê bảng sau: Phím Mũi tên lên Mũi tên xuống Mũi tên trái (mtt) Mũi tên phải (mtp) Ctrl mtp Ctrl mtt Home End Esc Delete Backspace Ctrl K Shift home Shift end Chức Gọi lại hàng trước Gọi lại hàng kế Lui ký tự Tới ký tự Qua phải từ Qua trái từ Về đầu hàng Về cuối hàng Xoá hàng Xóa ký tự chạy Xóa ký tự trước chạy Xóa đến cuối hàng Đánh dấu đến đầu hàng Đánh dấu đến cuối hàng - Cửa sổ Lịch sử lệnh (Command history): liệt kê lệnh sử dụng trước kèm thời gian bắt đầu Dùng cửa sổ Lịch sử lệnh để chép lại lệnh vào cửa sổ TS NGUYỄN ĐỨC THÀNH Lệnh Ta kết hợp phím Ctrl chuột trái để chọn lệnh sau đưa trỏ sang Cửa sổ Lệnh nhấn chuột phải chọn paste - Cửa sổ Thư mục (Current directory): cho biết thư mục sử dụng, thường mặc định cài ‘thư mục cài đặt Matlab’\work, thay đổi tuỳ ý - Cửa sổ Bệ phóng (Launch Pad): cho phép truy cập công cụ, tài liệu, demo Matlab từ bên - Cửa sổ Không gian làm việc (Workspace): cho biết biến sử dụng chương trình Các cửa sổ bật tắt từ menu View Hình 1.1 Cửa sổ MATLAB Ví dụ 1.1: tạo ma trận A x 3, bạn goõ A = [1 3; 6; 10] nhấn Enter, hình xuất hiện: A= 10 Giả sử muốn tính sin góc 125 radian, bạn gõ sau dấu nhắc TS NGUYỄN ĐỨC THÀNH sin (125) hình xuất ans = -0.6160 Dòng ans = (viết tắt answer) xuất không gán tên biến cho kết Muốn tính sin(A), bạn goõ sin(A) ans = 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894 -0.5440 MATLAB có số tên biến tạo sẵn sau pi: số 3.14159265 i,j: số ảo đơn vị eps: độ xác số chấm động, 2-52 realmin: số chấm động dương nhỏ nhất, 2-1022 realmax: số chấm động dương lớn nhất, 21023 inf: vô hạn naN: số Kết tính toán định dạng lệnh format Sau format ta ghi loại định dạng long: số chấm cố định 15 số 3.14159265358979 long e: số chấm động 15 số 3.141592653589793e+000 long g: chọn dạng tốt long long e short: số chấm cố định số 3.1416 short e: số chấm số 3.1416e+000 short g: chọn tốt short short e loose: xuống hàng để dễ đọc kết quả, ngược với compact Một cách khác vào menu File-Preferences để chọn loại format Ví dụï 1.2: >> pi ans = 3.1416 >> format long >> pi ans = 3.14159265358979 Muốn đưa vào nhiều hàng tính sau hàng bấm Shift Enter hay thêm dấu ‘;’ vào cuối hàng Khi tính toán xong hàng không xuất kết tính toán Bạn so sánh hai cách viết sau: >> A =10 TS NGUYỄN ĐỨC THÀNH A= 10 >> A*A ans = 100 >> A=10; A*A ans = 100 Một hàng chứa nhiều hàm cách dấu ’,’ hay ‘;’ Ví dụ1.3: tạo bảng loga lệnh sau format short; x = (1:10)’; logs = [x log10(x)] hình hai cột trị x từ đến 10 log x tương ứng Logs = 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.3010 0.4771 0.6021 0.6990 0.7782 0.8451 0.9031 0.9542 1.0000 Chú ý MATLAB phân biệt chữ hoa chữ thường Nếu lệnh dài dòng (tối đa 4096 ký tự) lý thẩm mỹ in ấn, ta ngắt dòng dấu ba chấâm ‘…’ nhấn Enter để xuống dòng Ví dụ: s = – 1/2 + 1/3 – 1/4 + 1/5 – 1/6 + 1/7 … 1/8 + 1/9 – 1/10 + 1/11 – 1/12; Coù thể thay đổi font chữ màu sắc Cửa sổ Lệnh cách vào menu FilePreferences – Command Window – Font &Colors Chú thích đước viết sau ký tự % không MATLAB xử lý Thay viết dòng lệnh MATLAB xử lý dòng, bạn soạn hàm MATLAB có đuôi m (xem thêm mục 1.6) cách vào File – New- M_file để mở cửa sổ Soạn thảo/sửa lỗi (Editor/debugger), gõ edit (hay edit tênhàm) cửa sổ Lệnh để gọi cửa sổ Soạn thảo Sau soạn thảo xong ta chạy thử dùng menu Debug-Run lưu file dùng menu File-Save as Muốn gọi file MATLAB có sẵn để biên tập, ta kích chuột File – Open chọn hàm phù hợp Hàm M gọi trực tiếp từ Cửa sổ Lệnh cách gõ tên hàm sau dấu nhắc Sau hướng dẫn sử dụng phím để gõ chương trình Ví dụ1.4: tìm nghiệm phương trình ax2 +bx+c Bạn gõ dòng lệnh sau: >>a =1; TS NGUYỄN ĐỨC THÀNH >>b =0; >>c =-2; >>x1 =(-b+sqrt(b^2-4*a*c))/2*a x1= 1.414 Bây tính nghiệm thứ hai, nhấn mũi tên lên để dòng trước >>x1=(-b+sqrt(b^2-4*a*c))/2*a Nhấn mũi tên trái kếùt hợp với backspace để bỏ dấu + thay dấu -, thay x1 x2, bấm Enter, kết x2= -1.414 Bạn viết hàm *.m nhận vào hệ số a, b, c tính nghiệm phương trình bậc hai Dùng lệnh edit (hoặc vào menu File-New- M_File) để gọi chương trình biên tập, gõ dòng sau: Hình 1.2 Biên tập hàm M Sau lưu file với tên abc dùng menu File- Save as Trong MATLAB, gõ abc gọi hàm tính nghiệm, chương trình yêu cầu cho biết giá trị a, b, c >> abc Enter a:2 Enter b:4 Enter c:6 x1 = -1.0000 + 1.4142i x2 = -1.0000 - 1.4142i Hàm gọi hàm script, bạn viết hàm riêng tính nghiệm sau (dùng chương trình biên tập) cất tên quadroot.m function [x1, x2]=quadroot (a,b,c) radical=sqrt(b^2-4*b*c); x1=(-b+radical)/(2*a); x2=(-b-radical)/(2*a); chương trình abc.m sửa a=input('Enter a:'); b=input('Enter b:'); TS NGUYỄN ĐỨC THÀNH c=input('Enter c:'); [x1, x2]=quadroot(a,b,c) Coù hai hàm M quan trọng matlabrc.m hệ thống sử dụng startup.m người sử dụng viết Khi khởi động MATLAB hàm thứ gọi có hàm thứ hai hàm gọi Hai hàm đặt thư mục thưmụcMATLAB \toolbox\local Bằng cách biên tập hàm startup bạn thêm đường dẫn lệnh addpath, đổi thư mục làm việc lệnh cd , gọi hàm M khác… Bạn kích phải chuột vào biểu tượng MATLAB, chọn Properties, thay đổi option ô cửa sổ Target, ví dụ thêm sau matlab.exe chuỗi /r tênfileM_muốn_gọi khởi động, tương tự thay đổi thư mục làm việc ô cửa sổ Start in Hình 1.3 Đặt cấu hình khởi động MATLAB Khi thoát khỏi MATLAB, hàm finish.m gọi có, người dùng biên tập hàm để thực thao tác tự động lưu biến workspace vào đóa chẳng hạn Sau liệt kê số hàm tổng quát, dùng việc soạn chương trình addpath(‘đường_dẫn_đến_thưmục’) : đường tìm đến thư mục (có thể vào menu File_Set path để thêm đường dẫn) beep on, beep off : tạo tắt tiếng beep TS NGUYỄN ĐỨC THÀNH beep: tạo tiếng beep clear: xoá Workspace cd('directory'): thay đổi thư mục làm việc disp(X): hiển thị mảng X, muốn hiển thị chuỗi ta đặt hai dấu nháy dơn ‘ dir (‘name’): hiển thị file có đặc tính name thư mục dos (‘command’): thực lệnh *.exe hệ điều hành Dos pause:ngừng chạy file M bấm phím bất kỳ, pause(n): ngưng n sec type filename: trình bày nội dung file ver: trình bày thông tin version MATLAB, Simulink toolbox what (what dirname): hiển thị file MATLAB có thư mục hay thư mục dirname who, whos: hiển thị biến Workspace which func: cho biết địa hàm hay file func mkdir (‘dirname’): tạo thư mục thư mục pwd: hiển thị thư mục !: thực lệnh hệ điều hành diary tên file: chép hành động nhấn phím sau kết xuất vào file văn bản, dùng để in hay lưu trữ Ví dụ 1.5: minh họa số hàm >> ver MATLAB Version 6.5.0.180913a (R13) MATLAB License Number: Operating System: Microsoft Windows 98 Version 4.10 (Build 2222: A ) Java VM Version: Java 1.3.1_01 with Sun Microsystems Inc Java HotSpot(TM) Client VM MATLAB Version 6.5 (R13) Simulink Version 5.0 (R13) Aerospace Blockset Version 1.0.1 (R13) CDMA Reference Blockset Version 1.1 (R13) Communications Blockset Version 2.5 (R13) Communications Toolbox Version 2.1 (R13) Control System Toolbox Version 5.2 (R13) Curve Fitting Toolbox Version 1.1 (R13) DSP Blockset Version 5.0 (R13) Data Acquisition Toolbox Version 2.2 (R13) Dials & Gauges Blockset Version 1.1.2 (R13) Embedded Target for Motorola MPC555 Version 1.0.1 (R13) Embedded Target for Texas Instrumen Version 1.0 (R13) Excel Link Version 2.0 (R13) Filter Design Toolbox Version 2.2 (R13) Fuzzy Logic Toolbox Version 2.1.2 (R13) GARCH Toolbox Version 1.0.2 (R13) Image Processing Toolbox Version 3.2 (R13) Instrument Control Toolbox Version 1.2 (R13) TS NGUYỄN ĐỨC THÀNH LMI Control Toolbox MATLAB COM Builder MATLAB Compiler MATLAB Excel Builder MATLAB Link for Code Composer Studi MATLAB Report Generator MATLAB Runtime Server Development Kit Mapping Toolbox Model Predictive Control Toolbox Model-Based Calibration Toolbox Mu-Analysis and Synthesis Toolbox Neural Network Toolbox Nonlinear Control Design Blockset Optimization Toolbox Partial Differential Equation Toolbox Real-Time Windows Target Real-Time Workshop Real-Time Workshop Embedded Coder Requirements Management Interface Robust Control Toolbox SB2SL (converts SystemBuild to Simu Signal Processing Toolbox SimMechanics SimPowerSystems Simulink Performance Tools Simulink Report Generator Spline Toolbox Stateflow Stateflow Coder Statistics Toolbox Symbolic Math Toolbox System Identification Toolbox Virtual Reality Toolbox Wavelet Toolbox xPC Target xPC Target Embedded Option Version 1.0.8 Version 1.0 Version 3.0 Version 1.1 Version 1.0 Version 1.3 Version 6.1.1 Version 1.3 Version 1.0.7 Version 1.1 Version 3.0.7 Version 4.0.2 Version 1.1.6 Version 2.2 Version 1.0.4 Version 2.2 Version 5.0 Version 3.0 Version 1.0.4 Version 2.0.9 Version 2.5 Version 6.0 Version 1.1 Version 2.3 Version 1.2 Version 1.3 Version 3.1.1 Version 5.0 Version 5.0 Version 4.0 Version 2.1.3 Version 5.0.2 Version 3.0 Version 2.2 Version 2.0 Version 2.0 (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) (R13) >>pwd ans = D:\MATLAB6p5\work >>mkdir(‘examples’) >>mkdir(‘c:\’,’examples’) >>mkdir(‘d:\work’) >>cd (‘c:\examples’) >> dos('notepad file.m &') >>!notepad % tạo thư mục examples thư mục % tạo thư mục examples thư mục gốc C % tạo thư mục d:\work % chọn thư mục c:\examples thư mục % mở notepad quay MATLAB % mở notepad 1.3 CÁC QUI ƯỚC VÀ PHÉP TOÁN: TS NGUYỄN ĐỨC THÀNH a/ Biến: tên biến dài tối đa 31 ký tự, bắt đầu chữ sau chữ, số hay gạch MATLAB phân biệt chữ hoa chữ thường, X x hai biến khác Không cần khai báo loại kích thước biến, MATLAB tự động bố trí nhớ cho biến b/ Số: số thập phân dùng dấu chấm để tách phần nguyên phần lẻ, ký hiệu e luỹ thừa 10, số phức dùng ký hiệu i hay j 9.6397238 1i -99 1.60210e-20 -3.14159j 0.0001 6.02252e23 3e5i c/ Ma trận mảng: Thông thường thuật ngữ ma trận (matrix) mảng (array) dùng lẫn lộn Mảng gồm số hữu hạn phần tử có kiểu Ma trận m x n mảng chữ nhật hai chiều m hàng n cột số thực hay phức Vectơ cột ma trận m x1, vectơ hàng ma trận 1xn, số vô hướng ma trận 1x1 hay vectơ/mảng/ma trận mà phần tử giống Ma trận đối tượng chủ yếu MATLAB Ma trận vuông có m = n Đường chéo ma trận gồm phần tử a kk Ma trận chéo ma trận mà phần tử không nằm đường chéo Ma trận đơn vị n x n ma trận chéo vuông có phần tử đường chéo Ma trận đưa vào theo hàng, phần tử hàng cách khoảng trắng hay có dấu phẩy, hàng cách dấu chấm phẩy Phần tử hàng i cột j ký hiệu A(i,j) a = [16 13; 10 11 8; 12; 15 14 1] b = [16 13; 10 11 8; 12; 16 14 1] u = [10; 20; 30] v = [10 20 30] w =10 Chuyển vị ma trận A m x n A’ n x m có hàng cột A Dấu : (colon) dùng để phần tử ma trận, ví dụ ký hiệu 1:10 vectơ hàng có phần tử 10, ký hiệu 100:-7:50 vectơ có phần tử 100 93 86 79 72 65 58 51 Ký hiệu A(1:k,j) k phần tử cột j A(:,j) A(i,:) phần tử cột j hàng i A(:,end) cột cuối A Ký hiệu A(k) phần tử thứ k A theo kiểu xếp ma trận thành vectơ dài gồm cột Ký hiệu A(i:k:l) phần tử thứ i, i+ k, i+2k …,l Sau số hàm ma trận sum(A) cho vectơ hàng mà phần tử tổng phần tử cột A, sum (A(end,:)) tính tổng phần tử cột cuối A, sum(A,2) cho vectơ cột mà phần tử tổng các phần tử hàng A Nếu A vectơ sum(A) trả số vô hướng TS NGUYỄN ĐỨC THÀNH 10 Tạo file chạy nhanh Matlab loại interpreter chạy chậm, thường dùng có nhiều vòng lặp Matlab Compiler có số hạn chế như: - Không compile file script M - Không compile hàm M dùng object hay eval, input… Ba file quan trọng để chạy MATLAB Compiler mex.bat, mcc.exe mbuild thư mục \bin\win32\ Các file chạy không cần khởi động MATLAB Ngoài máy phải cài MATLAB C/C++ Math Library MATLAB C/C++ Graphics Library Ta cần phải kiểm tra phần mềm Compiler có chạy không cách chạy mex yprime.c ( thư mục extern\examples\ mex) xem có tạo file yprime.dll không, không xem thông báo lỗi sửa (tham khảo Troubleshooting MATLAB Compiler) Thông thường ta phải thêm dòng sau vào config.sys: shell = c:\command.com /e:32768 /p nhận thông báo Out of environnment , sau khởi động lại máy tính Các thông báo sau yêu cầu ta chọn chương trình C/C++ compiler Lcc C version 2.4 kèm theo MATLAB hay chương trình 32 bit khác cài sẳn máy Watcom C/C++ versions 10.6 & 11.0 Borland C++ versions 5.0, 5.2, 5.3, 5.4, & 5.5 Microsoft Visual C++ (MSVC) versions 5.0 & 6.0 Professional Edition Trong trường hợp thành công file yprime.dll tạo Chạy mcc –x hello.m xem có tạo hello.dll không, file thư mục extern\examples\compiler\, file sinh hello.c, hello_mex.c, hello.h hello.dll Chạy mcc m hello.m file sinh hello.c, hello_main.c, hello.h hello.exe, chạy không cần MATLAB Hàm hello đơn giản dòng Hello, World - function hello % This is the hello, world function written in M code % $Revision: 1.1 $ % fprintf(1,'Hello, World\n' ); Neáu máy tính có nhiều compiler, dấu nhắc MATLAB , bạn gõ mex – setup để chọn compiler mong muốn Tạo file dll: Dịch M-file có tên mymfile.m thành file C tạo file dll tương ứng gọi trực tiếp từ MATLAB, có đuôi dll mcc -x mymfile Tạo hàm S Simulink: mcc -S mymfile Tạo áp dụng độc lập C: chạy không cần MATLAB mcc -m mymfile Tạo áp dụng độc lập C++: mcc -p mymfile TS NGUYỄN ĐỨC THÀNH 88 Tạo áp dụng đồ họa đôc lập (sgl:stand alone graphic library) mcc -B sgl mymfile Tạo áp dụng đồ họa C++ độc lập: (sglcpp:stand alone graphic library c++) mcc -B sglcpp mymfile Taïo thư viện C: mcc -m -W lib:libfoo -T link:lib foo.m Tạo thư viện C++ : mcc -p -W lib:libfoo -T compile:lib foo.m Tạo thư viện C chia xẻ: mcc -W lib:mylib -L C -t -T link:lib -h Function1 Function2 Tạo mã P MATLAB : mcc -B pcode mymfile Ví dụ: tạo file bphuong.dll từ hàm function y=bphuong(i) y=i*I Ở dấu nhắc MATLAB ta gõ mcc – x bphuong file sau tạo ra: bphuong.c, bphuong.h, bphuong_mex.c, bphuong.dll Khi gõ bphuong(10) dấu nhắc MATLAB, file bphuong.dll gọi thay bphuong.m mcc –x interp2 tạo hàm sau: interp2.c, interp2.dll, interp2.h, interp2_mex.c Các ngôn ngữ lập trình khác dùng interp2.dll để thực phép nội suy 1.25 CÔNG CỤ COM-BUIDER CỦA MATLAB 6.5 COM (Component Object Model, kiểu mẫu đối tượng component) chuẩn nhị phân độc lập Microsoft cho phép ngôn ngữ lập trình Delphi, C++ builder, Visual Basic sử dụng chung component soạn thảo người thứ ba Mỗi đối tượng kiểu COM bao gồm hay nhiều lớp (class) Mỗi lớp chứa nhiều phương thức gọi hàm (method) kiện (event) Chi tiết COM đọc đóa CD MSDN (Microsoft Designer Network) Library hay phần hướng dẫn Borland Delphi 5.0 MATLAB 6.5 có công cụ Com Builder giúp tạo đối tượng COM từ hàm M, đối tượng sau đươc cài vào ngôn ngữ lập trình Visual Basic, Visual C, Delphi hay ngôn ngữ khác có hỗ trợ COM Bằng cách thời gian lập trình rút ngắn nhiều Quá trình tạo component hoàn toàn tự động, bạn cần cung cấp file M, tên component, tên class số version Tên component tên file DLL tạo ra, class dùng để gọi hàm đó, tên class cần biểu thị tác động class, component có số version cài vào file DLL registry hệ thống Các bước tự động sinh mã, compile, link đăng ký component vào registry Trên máy chạy MATLAB phải cài ngôn ngữ lập trình sau: TS NGUYỄN ĐỨC THÀNH 89 Borland C++ Builder Borland C++ Builder Borland C++ Builder Microsoft Visual Studio 5.0 Professional Edition Microsoft Visual Studio 6.0 Professional Edition Microsoft Visual Studio NET Khi cài đặt chương trình, dấu nhắc MATLAB, bạn gõ lệnh mbuild – setup để chọn compiler, sau lệnh mccsavepath Quá trình tạo đối tượng COM đơn giãn, người dùng cần cung cấp tên component, tên class, hàm M MEX bên trong, bước COM Builder thực bao gồm tạo mã C, compile, link đăng ký sản phẩm với hệ điều hành Khi MATLAB COM Builder tạo component có đuôi dll , tự động tạo file nhị phân thư viện kiểu (type library) tên có đuôi lib kèm Sau khảo sát trình tạo component có nhiệm vụ tạo ma trận magic ghép (triển khai, deploy) vào chương trình Visual Basic Bạn biên tập file M Mymagic tạo ma traän magic baäc x function y = mymagic(x) y = magic(x); Trong MATLAB lệnh mymagic(5) tạo ma trận 17 24 15 23 14 16 13 20 22 10 12 19 21 11 18 25 Ta thử tạo file DLL tạo ma trận magic gọi Visual Basic Tại cửa sổ lệnh gõ Comtool chọn File-New Project để mở project Ta có cửa sổ MATLAB Com builder hộp thoại thiết lập project sau: TS NGUYỄN ĐỨC THÀNH 90 Hình 1.24 Cửa sổ COM Builder Trong ô Component name chọn tên component Mymatrix, tên class tự động tạo trùng tên component ô Classes bạn đổi tên Magicmatrix, tên component không trùng với tên file M hay MEX mà bạn thêm vào sau Muốn thêm class vào component bạn gõ tên class trường Class Names bấm Add, ô classes liệt kê class component, nuốn bỏ class ta chọn bấm Remove File dll tạo gán version 1.0 Thư mục chứa project thay đổi tuỳ ý trước bạn bấm OK Trong panel Compile code in bạn chọn option C hay C++ Nếu component có sử dụng đồ hoạ MATLAB bạn chọn check box Use Handle Graphịc Library Buid Debug version giúp tìm lỗi nên chọn Kết thúc ô cửa sổ bạn bấm OK File Mymatrix.cbl tạo Hình 1.25 Tạo project Mymatrix Bạn bấm chuột vào hàng M-files hay MEX-flies bấm nút Add File để thêm file M hay MEX vào project, mymagic.m , sau bạn bớt file nút Remove biên tập file M nút Edit TS NGUYỄN ĐỨC THÀNH 91 Hình 1.25 Tạo class MagicMatrix Hình 1.26 Build COM Bấm Build để biên dịch sang file DLL.Trong trình dịch, khung Build Status thông báo tiến trình việc biên dịch vấn đề gặp phải Các file nguồn trung gian cất vào thư mục project\src , file DLL kết cất vào thư mục\distrib tự động đăng ký vào hệ thống, file build.log cho biết diễn tiến trình build Nếu có cố trình build ngừng lại cho biết cố xảy ra, ví dụ như: C:/Program Files/Microsoft Visual Studio/VC98/INCLUDE/servprov.idl(19) : error MIDL2025 : syntax error : expecting an interface name or DispatchInterfaceName or CoclassName or ModuleName or a COM object name or LibraryName or a type specification near "cpp_quotu" C:/Program Files/Microsoft Visual Studio/VC98/INCLUDE/servprov.idl(19) : error MIDL2026 : cannot recover from earlier syntax errors; aborting compilation MBUILD.BAT: Error: IDL compile of 'D:/MATLAB6p5/work/Mymatrix/src/Mymatrix_idl.idl' failed Thông báo cho thấy trình build không hoàn thành được, cần cài lại Visual C++ phù hợp Nếu biên dịch thành công , bạn thấy dòng thông báo sau: DllRegisterServer in D:/MATLAB6p5/work/Mymatrix/src/Mymatrix_1_0.dll succeeded TS NGUYỄN ĐỨC THÀNH 92 Creating distrib directory Moving files to distrib Standalone DLL build complete Sau biên dịch thành công, file Mymatrix_1_0.dll tạo thư mục work\Mymatrix\distrib, tên component Mymatrix, tên class Magicmatrix, ứng với method mymagic, ta thử dùng component COM Visual Basic Delphi Đầu tiên phải cài component vào project Có hai cách thự điều Cách thứ dùng hàm CreateObject trình bày Private Sub Form_Load() 'This function is called when the form is loaded 'Creates a new magic class instance Dim theMagic as object On Error GoTo Handle_Error theMagic = CreateObject (“Mymatrix.Magicmatrix.1_0”) Exit Sub Handle_Error: MsgBox (Err.Description) End Sub Cách thú hai dùng toán tử New theo bước sau Chạy Visual Basic 6.0 Professional Edition, chọn loại Project standard.exe, vào menu Project- References chọn Mymatrix-1.0 Type Library bấm OK (Hình 1.27) Nếu vào menu View- Object Browser ta nhìn thấy cửa sổ Hình 1.28 Dùng cách có lợi tận dụng tính trợ giúp biên tập code AutoList- Members Auto-quich - Info Visual Basic Tương tự vậy, Delphi 5.0 bạn tạo project vào menu Projects – Import Type Library, chọn Mymatrix 1.0 Type Library(Version 1.0), bấm Install để cài component Mymatrix với tên class Tmagicmatrix method Mymagic vào component palette ActiveX TS NGUYỄN ĐỨC THÀNH 93 Hình 1.27 Cài đặt type library vào chương trình Visual Basic Hình 1.28 Cửa sổ Object Browser cuûa Visual Basic TS NGUYỄN ĐỨC THÀNH 94 Hình 1.29 Cửa sổ cài đặt Type Library Delphi Bây viết chương trình VB tạo ma trận magic, vào menu Components mở hộp thoại Components ta thêm component Microsoft Windows Common Controls 6.0 (để thêm object ListView), bấm OK Kế đến tạo form code sau: Loại Label TextBox CommandButton ListView Name Label1 edtSize btnCreate lstMagic Properties Caption = Magic Square Size Caption = Create GridLines = True, LabelEdit =lvwManual View = lvwReport Private Size As Double 'Holds current matrix size Private theMagic As Mymatrix.Magicmatrix 'magic object instance Private Sub btnCreate_Click() 'This function is called when the Create button is pressed 'Calls the mymagic method, and displays the magic square Dim y As Variant If Size