Bài tập lớn môn matlad và ứng dụng pdf

42 1.6K 15
Bài tập lớn môn matlad và ứng dụng pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG BÀI TẬP LỚN MÔN: MATLAB VÀ ỨNG DỤNG ĐỀ TÀI: LẬP TRÌNH GUIDE GIAO DIỆN Giảng viên hướng dẫn: ĐỒNG SĨ THIÊN CHÂU Sinh viên thực hiện: NGUYỄN LƯƠNG THÀNH MSSV: 40900040 Lớp: 09040003 TP.Hồ Chí Minh ngày 26 /10 /2012 Lời nói đầu: Ngày xưa cơng cụ tính tốn thủ cơng tay, bàn tính cổ điển để hỗ trợ tốn học, với đổi ngành điện tử, công nghệ thơng tin, cơng cụ tính tốn hỗ trợ ngành kĩ thuật đại đời, với mạnh mẽ nhanh chóng cơng cụ phần mềm, công cụ phần lớn thay cho việc thực thủ công, giúp kiểm tra kết cách nhanh chóng, giảm chi phí Cùng với phần mêm… cơng cụ hỗ trợ kĩ thuật phần mềm Win cc, Protell, Protues, Mlap, Matlab… Là công cụ thiếu ngành kĩ thuật sau giới thiệu phần mềm Matlab, cơng cụ hỗ trợ tính tốn mơ hệ thống trực quan xác Hẵn phần mềm Matlab khơng cịn xa lạ với người dùng, cơng cụ hỗ trợ tính tốn mơ thực tế mạnh, ngồi tính để thực điều đó, Matlab cịn hỗ trợ tạo giao diện người dùng (GUI), Chúng ta tìm hiểu ứng dụng từ để hiểu rõ dao diện GUI gì, làm để bắt đầu với GUI… Với đề tài giao diện GUI sâu vào nghiên cứu ứng dụng phát triển GUI, phát triển giao diện người dùng [Type text] Page Đề tài - 1: Viết giao diện bao gồm yêu cầu sau: 1) Cho phép chọn thực thi hàm sau: y=sin(x), y=cos(x), y=tg(x), y=cotg(x), y=arcsin(x), y=arcos(x), y=arctg(x), y=arccotg(x), y=sinh(x), y=cosh(x), y=tgh(x), y=cotgh(x) 2) Cho phép chọn nhập/hiển thị theo độ Radian 3) Cho phép nhập khoản giá trị x 4) Hiển thị đồ hàm chọn theo giá trị x nhập vào câu lên giao diện, có nút cho phép giữ xóa hình vẽ hàm [Type text] Page Phụ lục: PHẦN 1: SƠ LƯỢC VỀ LẬP TRÌNH GIAO DIỆN NGƯỜI DÙNG (GUIDE) TRONG MATLAB………………………………………………………………………… Trang 04 I II III GUI LÀ GÌ? BẮT ĐẦU VỚI GUI! CÁC BƯỚC CẦN THỰC HIỆN TRƯỚC KHI BẮT ĐẦU PHẦN 2: BẮT ĐẦU THAO TÁC VỚI GUI ………………………………………… Trang 06 I II III KHỞI ĐỘNG GUI………………………………………………………….Trang 06 MÔ TẢ CHỨC NĂNG CÁC CÔNG CỤ TRONG GIAO DIỆN GUI…….Trang 07 CHỈNH SỬA HỘP THOẠI INSPECTOR…………………………………Trang 08 PHẦN 3: THIẾT KẾ GIAO DIỆN (GUI)…………………………………………… Trang 10 I II III THIẾT KẾ GIAO DIỆN…………………………………………Trang 10 MỘT VÀI THUỘC TÍNH CỦA ĐỐI TƯỢNG TRONG MENU INSPECTOR…………………………………………………….Trang 11 MỘT VÀI CHỨC NĂNG MỞ RỘNG………………………… Trang 14 PHẦN : THỰC THI HÀM TRONG GUIDE……………………………………… Trang 17 I GIAO DIỆN TRONG MFILE………………………………………… Trang 17 II MỘT SỐ HÀM TRONG GUI….……………………………………… Trang 18 III KHÁI NIỆM BIẾN HỆ THỐNG………………………………… Trang 19 PHẦN 5: LẬP TRÌNH CÁC ĐỐI TƯỢNG……………………………………………Trang 20 I NÚT NHẤN DEGREE TRONG BẢNG SELECT INPUT…… Trang 20 II NÚT NHẤN DEGREE TRONG BẢNG SELECT INPUT…… Trang 21 III NÚT NHẤN DẤU = ……………………………………………Trang 21 IV EDIT TEXT NHÂP X………………………………………… Trang 24 V NÚT NHẤN PLOT …………………………………………… Trang 26 VI CHECK BOX HOLD ON VÀ GRID ON……………………….Trang 29 VII NÚT NHẤN DEFAULT…………………………………………Trng 29 VIII CHECKBOX COLOR ON………………………………………Trang 29 IX NÚT EXIT……………………………………………………….Trang 31 PHẦN 6: CÁCH SỬ DỤNG GIAO DIỆN…………………………………………… Trang 32 PHẦN 7: CHƯƠNG TRÌNH:………………………………………………………… Trang 35 [Type text] Page [Type text] Page PHẦN 1: SƠ LƯỢC VỀ LẬP TRÌNH GIAO DIỆN NGƯỜI DÙNG (GUIDE) TRONG MATLAB - - - - - I GUIDE LÀ GÌ GUI (Graphical User Interface) giao diện đồ họa có điều khiển nhiều cơng cụ người lập trình tạo sẵn, cho tương tác người dùng giao diện chương trình, Mỗi chương trình người lập trình tạp sẵn giao diện thực vài chức người lập tình tạo sẵn giao tiếp với người sử dụng Ứng dụng Matlab lập trình giao diện mạnh dễ thực hiện, tạo giao diện người dùng tương tự VBB, C++… GUI bao gồm đầy đủ chương trình hỗ trợ thực phép tốn LOGIC, mơ khơng gian 2D,3D, đọc hiển thị liệu, liên kết đa phương tiện.Giao tiếp với người dùng thơng qua hình ảnh, nút nhấn thực thi Hầu hết GUI thực (trả lời) lệnh người dùng thông qua tác động người dùng lên giao diện, người sử dụng không cần biết cấu trúc chương trình thực GUI thực thông qua hàm CALLBACK Khi người dùng tác động lên giao diện cách khác nhau, hàm CALLBACK gọi để thực thi II BẮT ĐẦU VỚI GUI Có phương pháp để lập trình GUI + Cách đơn giản sử dụng cơng cụ có sẵn GUI Matlab để lập trình Ưu điểm cách dễ thực hàm FUNCTION GUI tự tạo sẵn + Cách lập trình từ siêu tệp Mfile hàm FUNCTION người lập trình tự viết, có ưu điểm tùy biến cao Tuy nhiên cách khó địi hỏi người lập trình phải có hiểu biết sâu trình độ Ở với tập đơn giản giao diện, ta thực cách thứ để lập trình giao diện với công cụ hỗ trợ sẵn Matlab Khi thao tác giao diện thay đổi hàm III CÁC BƯỚC CẦN THỰC HIỆN TRƯỚC KHI BẮT ĐẦU Trước tiên để bắt đầu lập trình ta cần phải xác định mục đích chương trình gì? Sau tiến hành xác định bước thực để mo giao diện người dùng cho hợp lí xác Bước cuối viết chương trình thực thi Sơ đồ sau mơ trình tự thực vơi GUI: [Type text] Page Sơ đồ khối mô tả cách thức hoạt động GUI thao tác giao diện - - Khi bắt đầu với GUI, GUI tự động tạo mã tập tin thực thi hàm Callback function GUI thao tác kí tự mà người dùng nhập vào vào chuyển sang dạng số học, nói cách khác, giao diện GUI tương tự lệnh thực thi Comment Windowns Tất hàm callback thực thi lệnh chứa Chúng ta nên sử dụng chức HELP Matlab để tìm hiểu them tất cách hàm thực thi GUI, cách tạo thao tác với GUI … [Type text] Page PHẦN 2: BẮT ĐẦU THAO TÁC VỚI GUI Đây phiên Matlab R2011B, phiên khác thao tác tương tự - - - IV KHỞI ĐỘNG GUI Thực khởi động Matlab đến GUI theo hình sau: + Khởi động Matlab từ biểu tượng Matlab hình desktop + Trong cửa sổ Comment Windowns gõ lệnh “guide” enter: ta giao diện sau: Chọn: Dịng “Blank GUI (Default)”: để tao giao diện gui bắt đầu với giao diện trống Các dòng lại để khởi động GUI với giao diện tạo sẵn + Chú ý: Trong Matlab GUI hỗ trợ sẵn hộp thoại công cụ “Modal Question Dialog” để tạo giao diện với nút tùy chọn “yes no question” để thực thi lệnh Ta ứng dụng để tọa lệnh khỏi chương trình nút nhấn Exit Nhấp chọn OK để tạo giao diện bắt đầu với giao diện trống ta hình ảnh giao diện GUI sau: Trước tạo giao diện ta lưu File lại, Matlab tự động lưu file, file đuôi m file fig ta nhấn F5, Matlab chuyển đường dẫn đến thư mục lưu file, chọn nơi cần lưu nhấn Save [Type text] Page V - - MÔ TẢ CHỨC NĂNG CÁC CÔNG CỤ TRONG GIAO DIỆN GUI Trong giao diện thao tác để tùy biến cơng cụ phù hợp với mục đích sử dụng Mô tả chức công cụ bản: 1) Nhấp chuột vào để thay đổi độ rộng giao diện 2) Là nơi để cân chỉnh nút, biểu tượng giao diện 3) Là nơi để tạo giao diện liên kết với giao diện 4) Nút Play (Run) để thực thi chương trình Phía bên trái nhóm biểu tượng Matlab GUI hỗ trỡ sẵn: + Push Button: nút nhấn, nhấn vào thực thi lệnh cấu trúc hàm callback + Slider: trượt cho phép người dùng di chuyển trượt để thục thi lệnh + Radio Button: Nó giống Check Box thường sử dụng để tạo lựa chọn nhất, tức lần chọn số nhóm nhiều nút Khi chọn cịn lại nhóm bị bỏ chọn + Check box: Sử dụng để đánh dấu tích (thực thi) vào check nhiều để thực thi + Edit Text: nơi kí tự nhập vào từ người dùng, người dùng thay đổi + Static Text: Là kí tự hiển thị thông qua callback, thông thường để viết nhãn cho biểu tượng, người dùng thay đổi nội dung [Type text] Page if ~isnumeric(t) set(handles.plotx,'String','x is not numeric') + Hàm isnumeric xem xét x có phải mảng hay khơng, thì: set(handles.plotx,'String','x is not numeric') Nút Plot khóa thơng báo “x is not numeric” (x mảng) + Nếu sai lệnh thực hiện: elseif length(t) < set(handles.plotx,'String','x must be vector') + Hàm length(t) xét độ dài mảng t, mảng t a =  Kết trả vector từ đến có bước nhảy Như với câu lệnh ta phải nhập vào ô giá trị x vector có dạng: [Type text] Page 27 Số_đầu:bước_nhảy:số_cuối Bước nhảy có khơng cần (nếu khơng có Matlab mặc định 1) + Vậy sau thực lệnh c=eval(get(handles.x,'string')); thuộc tính nhập vào x chuyển dạng vector lưu vào biến c - Cấu trúc lặp vòng if – elseif – end: phần trước ta giải thích cấu trúc này, sau để cập đến ý nghĩa câu lệnh: Giả sử: get(handles.ham,'Value') == 1; plot(handles.axes1,c,sin(c),'LineWidth',2); + get(handles.ham,'Value') == 1; xét giá trị (Value) “ham” (đã giải thích phần trước), thực thi lệnh: plot(handles.axes1,c,sin(c),'LineWidth',2); + Lệnh Plot (2D) GUI: - - Câu trúc: Plot(địa_chỉ _vẽ,x,y,’ thuộc tính’); Ở địa_chỉ_vẽ gọi hàm handles.axes1 (đến địa có Tag axes1), thực vẽ y theo x, x hàm chọn nhập vào ô x (đã gán vào biến c), y hàm theo x (ở y = sin(c) ) Các_thuộc_tính bao gồm nhiều lựa chọn, ví dụ LineWidth (độ rộng nét vẽ), ta thực lệnh plot(handles.axes1,c,sin(c),'LineWidth',2); Nghĩa độ rộng nét vẽ đặt (đơn vị cell) Như sau thực chuỗi câu lệnh cách nhấn nút Plot giao diện Matlab đồ thị lên hình, đồ thị hàm lượng giác vẽ theo khoảng x nhập vào Vòng lặp cuối: if get(handles.grid,'Value') == grid on else grid off end if get(handles.hold,'Value') == hold on else hold off end + Lệnh: get(handles.grid,'Value') get(handles.hold,'Value') 1 == 1; == 1; hàm tìm giá trị Value ô Grid on Hold on tương ứng, chọn tương ứng với Value = 1, bỏ chọn tương ứng với Value = Giả sử hàm sau get(handles.grid,'Value') == grid on Thì grid = on, Lưới điểm bật + Tương tự cho Hold on [Type text] Page 28 VI LẬP TRÌNH CHO Ô HOLD ON VÀ GRID ON: - Gọi Callback ô viết vào hàm sau: % - Executes on button press in grid function grid_Callback(hObject, eventdata, handles) set(handles.axes1); grid % - Executes on button press in hold function hold_Callback(hObject, eventdata, handles) set(handles.axes1); hold Giải thích: hàm set(handles.axes1); Cho phép gọi thiết lập thuộc tính cho axes1 Value = tương ứng với bật grid (hold) Value = tương ứng với tắt grid (hold) Tóm lại: đánh dấu tích vào Value = 1, thực thi lệnh VII THIẾT LẬP NÚT NHẤN DEFAULT: - Gọi hàm callback nút Default sau viết vào hàm sau: set(handles.input,'string',''); set(handles.kq,'string',''); set(handles.x,'string',''); set(handles.hold,'Value',0); set(handles.grid,'Value',0); set(handles.color,'Value',0); set(handles.ham,'Value',1); set(handles.axes1,'Visible','off'); set(handles.axes1) cla; set(handles.nhan,'Visible','off'); + Đối với tất ô Edit Text Static Text thiết lập trước ta đưa thuộc tính String chúng trạng thái rỗng ‘ ‘ (mặc định ban đầu) + Đối với Check Box: ta đưa thuộc tính Value chúng trạng thái “0”, mặc định ban đầu + Đối với Pop-up Menu: ta đưa Value chúng trang thái “1”, mặc định ban đầu (SIN tương ứng với Value =1) + Đối với axes1 static text (Plot(x)) : ta đưa thuộc tính Visible chúng trạng thái “off”, trạng thái ban đầu + lệnh cla viết tắt clear all, nghĩa xóa tồn có axes1 VIII CHECKBOX COLOR ON: Các màu Matlab hỗ trợ : [Type text] Page 29 - Trên màu Matlab hỗ trợ kí tự, cịn màu khác phải sử dụng mã màu (gồm màu trộn lại) để xem mã màu đối tượng ta nhâp đúp vào đối tượng nhấp vào theo hình, rê chuột đến vị trí màu nào, mã màu lên Hình minh hoạ: Gọi callback nút Color on viết vào hàm sau: function color_Callback(hObject, eventdata, handles) if get(handles.color,'Value')==1; set(handles.input,'BackgroundColor','b'); set(handles.kq,'BackgroundColor','y'); set(handles.exit,'Color',[0.98,0.97,0.97]); set(handles.option,'BackgroundColor',[1,0.69,0.39]); set(handles.axes1,'Color',[0.95,0.87,0.73]); set(handles.button,'BackgroundColor','red'); elseif get(handles.color,'Value')==0; set(handles.input,'BackgroundColor','white'); set(handles.kq,'BackgroundColor',[0.94,0.94,0.94]); set(handles.exit,'Color',[0.94,0.94,0.94]); set(handles.option,'BackgroundColor',[0.94,0.94,0.94]); set(handles.axes1,'Color','w'); set(handles.button,'BackgroundColor',[0.94,0.94,0.94]); end [Type text] Page 30 + Hàm get(handles.color,'Value')==1; Đã giải thích phần Giả sử Color on chọn hàm thực thi: + set(handles.input,'BackgroundColor','b'); b = blue (xem bảng)  Ở để đặt thuộc tính màu cho đối tượng ta sử dụng lệnh có cấu trúc: Set(handles.nhãn_ex,’thuộc_tính’,’màu’) Hoặc Set(handles.nhãn_ex,’thuộc_tính’,[mã_màu]) + Nhãn_ex thuộc tính Tag đối tượng + Thuộc_tính thuộc tính màu đối tượng, màu nền, màu Font chữ… Xem thuộc tính màu phía bên trái Menu Inspector + Màu: màu mã hóa kí tự + Mã_màu: mã màu đối tượng (xem hướng dẫn trên) - Như với thuộc tính ta ta chỉnh màu cho chúng - Cấu trúc if-else để xét thuộc tính color on tương ứng với chọn không chọn IX NÚT EXIT: Gọi callback nút Exit viết vào lệnh sau: function exit_Callback(hObject, eventdata, handles) set(handles.all,’Visible’,’off’) - Thuộc tính Visible = off cho phép ẩn cửa sổ giao diện có Tag all, cửa sổ giao diện, tương ứng với thoát khỏi giao diện [Type text] Page 31 - - PHẦN 6: CÁCH SỬ DỤNG GIAO DIỆN Để bắt đầu với giao diện, làm theo cách sau: + Trong hình thiết kế giao diện, nhấn phím F5 bàn phím + Nhấn vào biểu tượng nút Play hình thiết kế giao diện + Trong hình thao tác Mfile, nhấn phím F5 để chạy chương trình Trước muốn sử dụng ta xếp menu theo trình tự tùy ý I TÍNH HÀM LƯỢNG GIÁC Bước 1: chọn hàm cần tính từ menu đổ xuống: - Bước 2: nhập giá trị vào ô input Bước 3: chọn giá trị nhập vào ô input theo bảng Select Input (Degree Radian) Bước 4: nhấn vào dấu Kết phép tính hiển thị ô output [Type text] Page 32 II VẼ HÀM SỐ LƯỢNG GIÁC Bước 1: Chọn hàm muốn vẽ: Bước 2: Nhập vào khoảng giá trị x Chú ý: x phải nhập dạng đề cập phần thiết kế giao diện Bước 3: Nhấn nút Plot để vẽ hàm [Type text] Page 33 + Có thể tùy chọn bật lưới điểm, giữ hàm cũ vẽ hàm mới…: III SỬ DỤNG NÚT COLOR ON Đánh dấu vào ô Color on để bật màu cho giao diện, bổ chọn trở màu mặc định - IV SỬ DỤNG NÚT EXIT Nếu bạn không muốn sử dụng nữa, nhấn vào nút Exit, cửa sổ với tiêu đề “are you sure you want to Close ?, chọn “Yes” để đóng giao diện, chọn “No” để trở lại hình giao diện Khi nhấn vào Nút Default, tất trạng thái quay ban đầu [Type text] Page 34 PHẦN 7: CHƯƠNG TRÌNH function varargout = baitaplonMatlab_bai_1(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, 'gui_Singleton', gui_Singleton, 'gui_OpeningFcn', @baitaplonMatlab_bai_1_OpeningFcn, 'gui_OutputFcn', @baitaplonMatlab_bai_1_OutputFcn, 'gui_LayoutFcn', [] , 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % - Executes just before baitaplonMatlab_bai_1 is made visible function baitaplonMatlab_bai_1_OpeningFcn(hObject, eventdata, handles, varargin) % Choose default command line output for baitaplonMatlab_bai_1 handles.output = hObject; handles.unit_input = 0; % Update handles structure guidata(hObject, handles); % - Outputs from this function are returned to the command line function varargout = baitaplonMatlab_bai_1_OutputFcn(hObject, eventdata, handles) % Get default command line output from handles structure varargout{1} = handles.output; % - Executes during object creation, after setting button properties function ham_CreateFcn(hObject, eventdata, handles) % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes during object creation, after setting button properties function input_CreateFcn(hObject, eventdata, handles) % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); [Type text] Page 35 end % - Executes on button press in degree function degree_Callback(hObject, eventdata, handles) b = str2num(get(handles.input,'string')); handles.unit_input = b*pi/180 guidata(hObject, handles) % - Executes on button press in radian function radian_Callback(hObject, eventdata, handles) handles.unit_input = str2num(get(handles.input,'string')); guidata(hObject, handles) % - Executes during object creation, after setting button properties function x_input_CreateFcn(hObject, eventdata, handles) % See ISPC and COMPUTER if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % - Executes on button press in plotx function plotx_Callback(hObject, eventdata, handles) set(handles.nhan,'Visible','on'); c=eval(get(handles.x_input,'string')); if get(handles.ham,'Value') == 1; plot(handles.axes1,c,sin(c),'LineWidth',2); elseif get(handles.ham,'Value') == 2; plot(handles.axes1,c,cos(c),'LineWidth',2); elseif get(handles.ham,'Value') == 3; plot(handles.axes1,c,tan(c),'LineWidth',2); elseif get(handles.ham,'Value') == 4; plot(handles.axes1,c,cot(c),'LineWidth',2); elseif get(handles.ham,'Value') == 5; plot(handles.axes1,c,asin(c),'LineWidth',2); elseif get(handles.ham,'Value') == 6; plot(handles.axes1,c,acos(c),'LineWidth',2); elseif get(handles.ham,'Value') == 7; plot(handles.axes1,c,atan(c),'LineWidth',2); elseif get(handles.ham,'Value') == 8; plot(handles.axes1,c,acot(c),'LineWidth',2); elseif get(handles.ham,'Value') == 9; plot(handles.axes1,c,sinh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 10; plot(handles.axes1,c,cosh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 11; plot(handles.axes1,c,tanh(c),'LineWidth',2); elseif get(handles.ham,'Value') == 12; plot(handles.axes1,c,coth(c),'LineWidth',2); end if get(handles.grid,'Value') == grid on else grid off [Type text] Page 36 end if get(handles.hold,'Value') == hold on else hold off end % - Executes on button press in grid function grid_Callback(hObject, eventdata, handles) set(handles.axes1); grid % - Executes on button press in hold function hold_Callback(hObject, eventdata, handles) set(handles.axes1); hold % - Executes on button press in ok function ok_Callback(hObject, eventdata, handles) d=handles.unit_input y=get(handles.ham,'Value') if y==1; e=sin(d) elseif y==2; e=cos(d) elseif y==3; e=tan(d); elseif y==4; e=cot(d); elseif y==5; e=asin(d); elseif y==6; e=acos(d); elseif y==7; e=atan(d); elseif y==8; e=acot(d); elseif y==9; e=sinh(d); elseif y==10; e=cosh(d); elseif y==11; e=tanh(d); elseif y==12; e=coth(d); end if and(e-0.000001) set(handles.kq,'string','0'); elseif or(e>1000,e

Ngày đăng: 23/03/2014, 09:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan