Giới thiệu Matlab, cơ sở về Matlab, Function files và Script files, đồ họa, tạo giao diện trong Matlab, Simulink là những nội dung chính trong bài giảng Lập trình matlab cơ bản. Mời các bạn cùng tham khảo nội dung bài giảng để nắm bắt nội dung chi tiết.
5/9/2013 BÀI GIẢNG GV:ThS Võ Thiện Lĩnh Một số vấn đề cần tìm hiểu Giới thiệu Matlab Cơ sở Matlab Function files Script files Đồ họa Tạo giao diện Matlab Simulink 1 5/9/2013 BÀI 1.GIỚI THIỆU Matlab vừa ngơn ngữ lập trình vừa phần mềm ứng dụng tính tốn hiệu Matlab - Matrix Laboratory Matlab thương hiệu thương mại hóa tập đồn MathWorks BÀI 1.GIỚI THIỆU Khả ứng dụng Matlab Thư viện dựng sẵn to lớn phong phú nhiều lĩnh vực Giải vấn đề cách số học Matlab ứng dụng thuật toán kiểm chứng nên kết đáng tin cậy Lệnh hàm sử dụng đơn giản Có thể xây dựng hàm riêng cho ứng dụng đặc biệt Cung cấp thư viện hàm đồ họa mạnh Cung cấp gói ứng dụng Simulink đầy đủ để mơ 5/9/2013 BÀI 1.GIỚI THIỆU Quản lý không gian làm việc Matlab Cửa sổ trợ giúp (Help window) Nút Start Cửa sổ nhập lệnh (Command window) Cửa sổ không gian làm việc (Workspace window) Cửa sổ trình lệnh (Command History window) Cửa sổ địa thư mục thời (Current directory window) BÀI 2: CƠ SỞ VỀ MATLAB Các biến số Hàm lập sẵn Một số ví dụ để làm quen với Matlab Vector ma trận So sánh phép tính logic Các lệnh điều khiển chương trình 5/9/2013 I Các biến số 1.Biến Tên_biến = giá trị biểu thức + Biến (variable) Matlab kí hiệu sử dụng để chứa giá trị Gồm biến toàn cục(global), biến cục bộ(local) + Tên biến (variable name): bắt đầu chữ cái, chữ cái, chữ số kí tự gạch chân(_) Tối đa 31 kí tự, Matlab phân biệt rõ chữ hoa chữ thường + Ví dụ : >> x = ; >> x = x + ; + Biến kiểu xâu kí tự ( string ) >> ten='Nguyen Van A' ten = Nguyen Van A Tránh đặt tên biến trùng với tên hàm chuẩn, từ khóa Matlab I Các biến số Các 5/9/2013 II Hàm lập sẵn • • • • • • • • • • • • sqrt(x) : hàm rút bậc hai exp(x) : hàm e ( e = 2,71828…) log(x) : hàm lôgarit tự nhiên ( số e ) log10(x): hàm lôgarit số 10 sin(x)/ cos(x) : hàm sin/ hàm cos tan(x) / cot(x) : hàm tang/ hàm cotang >> help LỆNH Một số hàm liên quan đến số phức sau: abs(z) : lấy mođun (suất) số phức anglc(z): lấy góc pha số phức real(x): lấy phần thực imag(x) : lấy phần ảo conj(x) : trả số phức liên hiệp số phức z II Hàm lập sẵn Một số lệnh Lệnh clc Công dụng Xóa (lau) cửa sổ lệnh Mang tính chất hình thức,giá trị biến tồn clear all Giải phóng tồn biến khỏi nhớ Xóa Workspace clear var1 var2 Giải phóng biến var1 var2 khỏi nhớ quit Thốt khỏi chương trình Matlab who Liệt kê biến hành có nhớ ; Dấu chấm phẩy ; cuối dòng lệnh ngăn không cho Matlab hiển thị kết cửa sổ lệnh … Khi dòng lệnh dài cần xuống dòng, dấu chấm … cuối dòng lệnh báo cho Matlab biết dòng lệnh tiếp tục dòng : Dấu chấm : dùng để phát sinh mảng có phần tử cách % Dấu phần trăm % Matlab xem sau dấu % lời bình 5/9/2013 II Hàm lập sẵn Một số lệnh Lưu phiên làm việc với Matlab -Lệnh 'diary' sử dụng cho mục đích Thực hiện: >> diary('diary_file_name') >> (các câu lệnh bạn đây) >> diary off II Hàm lập sẵn • • • • • • • • • Một số ví dụ >>z = sqrt(25) >>y=sin(pi/4) >>round(3.8) = 4, round(3.49) = 3, round(3.5) = >>y = 3^2+1 >>x = y/5, z= y\5 >> rem(10,3) >>c=clock >> z = – 2i, abs(z), angle(z)*180/pi,real(z), imag(z) Giải phương trình bậc R : 2x2 + 5x - = 5/9/2013 II Hàm lập sẵn 2.Một số ví dụ(tt) Thành lập biểu thức: >>syms x y; >>S=2*x+3*y; Tính giá trị biểu thức S với: x=2; y=3 >>u=subs(S,{x,y},{2,3}) >>u= subs(S,x,y^2) Khai triển rút gọn: >>v=x^2+2*x+1 >>a=factor(v),b=expand(a) >>c=factor(x^4-1), d=simplify(c) II Hàm lập sẵn 2.Một số ví dụ (tt) 1.Giải phương trình bậc R : 2x2 + 5x - = Sử dụng lệnh “solve” >>solve(‘2*x^2+5*x-3=0'); 2.Giải phương trình sau theo ẩn b c: b2 +8c+2b=0 >>solve('b^2+8*c+2*b=0','c') >>solve('b^2+8*c+2*b=0',‘b') 3.Giải hệ phương trình sau: >> [x y] = solve('3*x+y+1', '4*y+2*x-1') 4.Giải hệ phương trình sau: 5/9/2013 II Hàm lập sẵn 2.Một số ví dụ (tt) Tính đạo hàm biểu thức sau: x3 + 2x +5y theo x y >> syms x y >> diff(x^3+2*x+5*y,x) >> diff(x^3+2*x+5*y,y) Tính đạo hàm bậc của: sin(xy2) theo x y >> diff(sin(x*y^2),x,2) >> diff(sin(x*y^2),y,2) II Hàm lập sẵn 2.Một số ví dụ (tt) Tính tích phân sau: x n dx >> syms x y n >> int(x^n) >> int(x^n,n) %biến lấy tích phân n: b Tính tích phân sau: x dx a >> syms x a b >> int(x^2,a,b) Tính tích phân sau theo y: xy dy >>int(x*y^2,y,0,2) n x dn 5/9/2013 II Hàm lập sẵn 2.Một số ví dụ (tt) Giải phương trình vi phân sau: y’(t) + 4y(t) = e-t >> y=dsolve('Dy+4*y=exp(-t)') Giải phương trình vi phân sau: y’(t) + 4y(t) = e-t , y(0)=1 >> y=dsolve('Dy+4*y=exp(-t)','y(0)=1‘) Giải phương trình vi phân sau: y’’(t) + 4y(t) = e-2t , y(0)=1, y(pi)=0 >> y=dsolve('D2y+4*y=exp(-2*t)','y(0)=0','y(pi)=0') II Hàm lập sẵn 3.Vector & ma trận Mảng: tập hợp số, ký tự xếp có thứ tự • Mảng chiều ( vectơ) -Vectơ hàng (row array) >>x=[2,7,0,-3] %cách dấu ‘ , ’ khoảng trắng -Vectơ cột (column array) >>v=[3;5;6;9] %cách dấu ‘ ; ’ • Mảng chiều( ma trận) >> A=[2,4,6 ; 3,5,7 ; 4,6,8] A= 5/9/2013 II Hàm lập sẵn 3.Vector & ma trận Mảng có phần tử cách Tên_mảng=[ ptử đầu a : gia số : ptử cuối b ]; Tên_mảng=linspace(a,b,n); n số phần tử mảng Tên_mảng=logspace(a,b,n); tăng theo hàm log Ví dụ: Hoặc: >>u= [0:1:10] >>u= linspace(0,10,11) II Hàm lập sẵn 3.Vector & ma trận Tìm nghiệm đa thức x3 + 6x2 -11x +290 >>a=[1,6,-11,290]; % hệ số đa thức >>x=roots(a) Hoặc >>x=roots([1,6,-11,290]); Đa thức có nghiệm là: x1= -10 x2= 2+5i, x3= 2-5i Dùng hàm poly() kiểm tra lại ví dụ >>r=[-10,2+5i,2-5i]; % cho trước nghiệm >>poly( r ) ans= -11 290 Đa thức phải tìm là: x3 + 6x2 -11x +290 Lưu ý: hệ số xếp theo lũy thừa giảm biến 10 5/9/2013 2.Đặc tả màu kích thước đường vẽ Để đặc tả màu kích thước đường vẽ ta dùng tham số sau: • LineWidth: độ rộng đường thẳng,tính số điểm • MarkerEdgeColor: màu cạnh khối đánh dấu • MarkerFaceColor: màu khối đánh dấu • MarkerSize: kích thước khối đánh dấu Màu xác định thông số: Các dạng đánh dấu đồ thị 27 5/9/2013 Ví dụ : • x = -pi : pi/10 : pi; • y = tan(sin(x)) - sin(tan(x)); • plot(x,y,' rs','LineWidth',2,'MarkerEdgeColor','k', 'MarkerFaceColor','g','MarkerSize',10) Đường cong y = f(x) có đặc tả sau : - đường vẽ đường đứt nét( ) - khối đánh dấu hình vng (s), đường vẽ màu đỏ(r) - đường vẽ rộng point - cạnh khối đánh màu đen - khối đánh dấu màu green - kích thước khối đánh dấu 10 point Đặt thơng số cho trục Ví dụ: x=[0 3]; y=[0 5]; h=plot(x,y) Để thấy thuộc tính đồ họa hàm plot ta dùng lệnh • set(h) • Bây ta thay đổi thuộc tính đồ thị: set(h,’Color’, ‘r’) %dat lai mau set(h,'LineWidth',6) %dat rong duong set(h,'Marker','v','MarkerSize',6) • • 28 5/9/2013 Ghi nhãn lên trục tọa độ Ví dụ x=[-5:0.01:5]; y1=x.^2; plot(x,y1,'r ') xlabel('Truc x'); ylabel('Truc y'); legend('y1=x^2') text(-3,9,' \leftarrow x^2','FontSize',18) gtext('Do thi') 29 5/9/2013 4.Vẽ nhiều hình trục Ví dụ: Vẽ hàm y1=x2 y2=cos3x, (rad) đồ thị Cách 1: x=[-5:0.01:5]; y1=x.^2; y2=cos(3*x); plot(x,y1,x,y2,'r ') xlabel('Truc x'); ylabel('Truc y'); legend('y1=x^2','y2=cos 3x') Cách 2: x=[0:0.01:5]; y1=x.^2; y2=cos(3*x); grid on hold on plot(x,y1,'r ') plot(x,y2, 'm ') xlabel('Truc x'); ylabel('Truc y'); 10 hold off 5.Vẽ nhiều trục • Hàm: subplot(m,n,p) subplot(mnp) • subplot(2,2,[1 3]) subplot(2,2,2) subplot(2,2,4) • subplot(2,2,1:2) subplot(2,2,3) subplot(2,2,4) x=[-5:0.01:5]; for n = 1:8 subplot(4,2,n) plot(x,sin(n*pi*x)) end 30 5/9/2013 5.Vẽ nhiều trục • Ví dụ: function dieucheAM(fc,fm) Ac = 1; % Carrier Amplitude Am = 1; % Baseband Amplitude m = Am/Ac; t = linspace(0,1,100*fc); c=Ac*cos(2*pi*fc*t); e = (Ac + Am*cos(2*pi*fm*t)); u = (Ac + Am*cos(2*pi*fm*t)).*cos(2*pi*fc*t); %DSB-AM subplot(1,3,1);plot(t,e,'r');grid on 10 subplot(1,3,2);plot(t,c,'r');grid on 11 subplot(1,3,3);plot(t,u);grid on 6.Các lệnh vẽ đồ thị khác • Lệnh BAR: vẽ đồ thị dạng cột Y = round(rand(5,3)*10); subplot(2,2,1); bar(Y,'group') title 'Group' subplot(2,2,2); bar(Y,'stack') title 'Stack' subplot(2,2,3); barh(Y,'stack') title 'Stack' subplot(2,2,4) ; bar(Y,1.5) Group Stack 20 15 10 5 Stack Width = 1.5 4 2 10 15 20 title 'Width = 1.5' • Lệnh POLAR : vẽ hệ tọa độ cực t = -pi:0.01:pi; polar(t, sin(t)) 31 5/9/2013 6.Các lệnh vẽ đồ thị khác • Lệnh POLAR : vẽ hệ tọa độ cực Ví dụ 1: t = -pi:0.01:pi; polar(t, sin(t)) Ví dụ 2: x=0:0.1:2*pi; polar(x,abs(sin(2*x).*cos(2*x))) 6.Các lệnh vẽ đồ thị khác Lệnh STAIRS: vẽ đồ thị dạng bậc thang x = -pi:0.2:pi; stairs(x,sin(x)) xlabeL('Truc x') ylabel('y = stairs(x,sin(x)') grid on 0.8 0.6 0.4 y = stairs(x,sin(x) • 0.2 -0.2 -0.4 -0.6 -0.8 -1 -4 -3 -2 -1 Truc x 32 5/9/2013 6.Các lệnh vẽ đồ thị khác • Lệnh STEM: phân bố lược x = 0:0.1:4; stem(x,exp(x)) xlabeL('Truc x') ylabel('y = stairs(x,sin(x)') grid on 60 50 y = stairs(x,sin(x) 40 30 20 10 0 0.5 1.5 Truc x 2.5 3.5 Ví dụ 3: Soạn thảo script file có tên bai3.m để lập biểu đồ tổng số sinh viên Điện Tử - Tin học tốt nghiệp trường X từ năm 1996 đến 2001 với liệu sau: • • % Lap bieu tong so sinh vien Dien tu – Tin hoc tot nghiep % svdt=[38 33 36 31 60 70]; svth=[48 54 120 92 110 131]; nam=1996:2001; subplot(211), bar(nam,svdt); title('Sinh vien Dien tu tot nghiep tu 1996-2001'); subplot(212), bar(nam,svth); title('Sinh vien Tin hoc tot nghiep tu 1996-2001'); colormap(cool(5)); Colormap 33 5/9/2013 6.Các lệnh vẽ đồ thị khác • Lệnh PIE: phân bố % hình trịn x=[20 45 15 13 7]; y=[0 0] % để nhấn mạnh phần 15, %chọn để chúng dính liền pie(x,y) 7% 20% 13% 15% 45% Lệnh ginput • fplot('sinc(x)',[-2*pi,2*pi]); • [x,y]=ginput(3) %lấy tọa độ điểm đồ thị 34 5/9/2013 II ĐỒ HỌA 3D Ví dụ: >> [x,y,z]=peaks; %hàm có phân bố Gauss >> plot3(x,y,z) >> mesh(x,y,z) %bề mặt dạng lưới >> surf(x,y,z) %tô màu bề mặt >> waterfall(x,y,z) >> pcolor(x,y,z)%giá trị Z thể với giá trị màu tương ứng • >> contour(x,y,z) %lấy đường viền 2D • • • • • • • Bài 5: SIMULINK • Simulink phần mềm mở rộng MATLAB (Toolbox Matlab) dùng để mô hình hố, mơ phân tích hệ thống động, thiết kế hệ thống điều khiển, thiết kế DSP, hệ thống thông tin ứng dụng mô khác • Simulink ghép hai từ Simulation Link Simulink cho phép mơ tả hệ thống tuyến tính,hệ phi tuyến, mơ hình miền thời gian liên tục, hay gián đoạn hệ gồm liên tục gián đoạn 35 5/9/2013 CÁC BLOCKS LIBRARY: • • • • • • • • Thư viện SOURCES Thư viện Đồ thị (SINKS) Thư viện Phần Rời Rạc (DISCRETE) Thư viện Phần Tuyến tính (LINEAR) Thư viện Phần Phi Tuyến (NONLINEAR) Thư viện Phần Đầu Nối (CONECTIONS) Thư viện BLOCKSETS TOOLBOXES … Các kiểu liệu Simulink chấp nhận kiểu liệu sau : • double số thực với độ xác gấp đơi • single số thực với độ xác đơn • int8 số ngun có dấu bit • uint8 số ngun khơng dấu bit • int16 số ngun có dấu 16 bit • uint16 số nguyên khg dấu 16 bit • int32 số ngun có dấu 32 bit • uint32 số nguyên không dấu 32 bit 36 5/9/2013 Các bước để vẽ mơ hình 1.Từ cửa sổ Matlab đánh lệnh simulink Cửa sổ thư viện khối xuất 2.Từ cửa sổ thư viện ta nhấp chuột vào File/New/Model nhấn Ctrl+ N Chọn Block thư viện thích hợp xây dựng mơ hình sử dụng thao tác "nhấn – kéo – thả" chuột Ví dụ • Trong sơ đồ chọn khối từ thư viện: + Thư viện nguồn tín hiệu (Sources): Chọn Sin wave + Thư viện khối nhận tín hiệu (Sinks): Chọn Scope + Các hàm tuyến tính (continuous): Chọn Integrator + Commonly userd blocks: Chọn Mux 37 5/9/2013 Ví dụ • Mơ phương trình dùng để biến đổi độ Celcius thành độ Fahrenheit : TF = (9/5)TC + 32 • Trước hết ta khảo sát khối cần để tạo mơ hình: khối Ramp thư viện Sources để đưa vào tín hiệu nhiệt độ khối Constant thư viện Sources để tạo số 32 khối Gain thư viện Math để tạo hệ số 9/5 khối Sum thư viện Math để cộng hai đại lượng khối Scope thư viện Sinks để hiển thị kết Ví dụ 3: Mơ hệ pt z1 +z2 =1 -z1+z2=1 38 5/9/2013 Ví dụ 4: Mơ pt vi phân x’(t) = -2x’(t) + u(t) • Với u(t) sóng vng có biên độ=1 tần số =1 rad/sec Ví dụ 5: Thiết kế phân tích hệ thống 39 5/9/2013 Ví dụ 6: Mơ phương trình sau Sine Wave Clock -1 Product 80 Gain Product2 eu Math Function Product1 Scope -1 Constant Gain1 1.Nhập vào chuỗi số in kết tính của: • A) tổng bình phương số chuỗi? • B) giai thừa phần tử chuỗi? • C) số nguyên tố chuỗi? Nhập chuỗi ký tự chữ thường in chuỗi ký tự chữ HOA? Nhập vào chuỗi số in chuỗi với thứ tự ngược lại? Vẽ đồ thị tìm cực trị hàm f(x)=x^3+2*x^2-1 ? Tính x^n=? 40 5/9/2013 Viết chương trình u cầu Nhập liên tiếp số nhập số dừng nhập Tính trung bình cộng số âm trung bình cộng số dương vừa nhập? 41 ...5/9/2013 BÀI 1.GIỚI THIỆU Matlab vừa ngơn ngữ lập trình vừa phần mềm ứng dụng tính tốn hiệu Matlab - Matrix Laboratory Matlab thương hiệu thương mại hóa tập đồn MathWorks BÀI 1.GIỚI THIỆU... directory window) BÀI 2: CƠ SỞ VỀ MATLAB Các biến số Hàm lập sẵn Một số ví dụ để làm quen với Matlab Vector ma trận So sánh phép tính logic Các lệnh điều khiển chương trình 5/9/2013... lệnh MATLAB theo trình tự định Cấu trúc đề nghị Script file: Phần thích : Viết dịng thích cho chương trình Phần đầu vào: giá trị đầu vào Phần tính tốn Phần trình bày kết quả: Dùng số hàm Matlab