Bước đầu làm việc với Matlab giới thiệu
Giới thiệu
MATLAB là một bộ chương trình phần mềm lớn dành cho tính tóan kỹ thuật. ta có thể dùng MATLAB để:
• Tính tóan.
• Phát triển thuật tóan.
• Thu thập dữ liệu.
• Mô hình và mô phỏng.
• Phân tích dữ liệu.
• Vẽ đồ thị.
• Giao diện đồ họa.
MATLAB là tên viết tắt từ “MATrix LABoratory”. Như tên của phần mềm cho thấy, phần cốt lõi của phần mềm là dữ liệu được lưu dưới dạng array (ma trận) và các phép tính tóan ma trận, giúp việc tính tóan trong MATLAB nhanh và thuận tiện hơn so với lập trình trong C hay FORTRAN. Đặc biệt, khả năng tính tóan của MATLAB có thể dễ dàng được mở rộng thông qua các bộ toolbox. Toolbox là tập hợp các hàm MATLAB (M-file) giúp giải quyết một bài tóan cụ thể.
MATLAB gồm 5 phần chính:
• Development Environment: là một bộ các công cụ giúp ta sử dụng các hàm và tập tin của MATLAB. Nó bao gồm: MATLAB desktop, Command Window, a command history, an editor, debugger, browsers for viewing help, the workspace, files, the search path.
• MATLAB Mathematical Function Library: tập hợp các hàm tóan học như sum, sine, số học, v.v.
• MATLAB Language (scritp): ngôn ngữ lập trình bậc cao.
• Graphics: các công cụ giúp hiễn thị dữ liệu dưới dạng đồ thị. Ngòai ra nó còn cho phép xây dựng giao diện đồ họa.
• MATLAB Application Program Interface (API): bộ thư viện cho phép ta sử dụng các hức năng tính tóan của MATLAB trong chương trình C hay FORTRAN.
trợ one-way, two-way, and n-way analysis of variance (ANOVA), analysis of covariance (ANOCOVA), hồi quy (regression). Hypothesis Tests: hàm cho các kiểm định. Statistical Plots: hỗ trợ vẽ các đồ thị thống kê. Design of Experiments (DOE): hỗ trợ việc thiết kế thực nghiệm. Probability Distributions normpdf(X,MU,SIGMA) tính giá trị của hàm mật độ tại X cho phân bố Normal có tham số MU và SIGMA. R = normrnd(MU,SIGMA,m,n) tạo một ma trận R(m,n) chứa các giá trị ngẫu nhiên có phân bố Normal với tham số MU và SIGMA. norminv(P,MU,SIGMA) tính giá trị nghịch đảo của xác suất p của hàm phân bố Normal tích lũy với tham số MU và SIGMA. [muhat,sigmahat,muci,sigmaci] = normfit(DATA, alpha) ước lượng tham MU và SIGMA với độ tin cậy100(1 - alpha) % cho dữ liệu DATA theo phân bố Normal. Ví dụ: X là biến ngẫu nhiên nhị thức với n=50, p=0,3. Tìm P(X<=17) >> p=binocdf(17,50,0.3) p = 0.7822 Ví dụ: Tìm tham số μ=1/λ cho dữ liệu có phân bố hàm số mũ với độ tin cậy là 99% >>data = exprnd(3, 100, 1); >>[parmhat, parmci] = expfit(data, 0.01) parmhat = 2.7292 parmci = 2.1384 3.5854 Descriptive Statistics mean(x) tính trung bình cho mỗi cột dữ liệu trong X. var(X) tính phương sai cho mỗi cột dữ liệu trong X. prctile(X,p) tính số phân vị p% của dữ liệu X. p trong khỏang [0 100] skewness(X), kurtosis(X) tìm skewness và kurtosis cho mỗi cột dữ liệu của X. Ví dụ: >> x=[2 3 4 5]; >> var(x) ans = 1.6667 Statistical plotting boxplot(X) tạo đồ thị box- whisker cho mỗi cột dữ liệu trong X. normplot(X) vẽ đồ thị phân bố Normal cho mỗi cột dữ liệu trong X. hist(X) vẽ đồ thị histogram cho dữ liệu X. pareto(X) vẽ đồ thị Pareto cho dữ liệu X Ví dụ: >> boxplot(x) Hình 4. boxplot Linear model p = anova1(X) tính bảng one-way ANOVA để so sánh trung bình của 2 hay nhiều cột dữ liệu trong ma trận mxn X, trong đó các cột chứa mẫu có m quan sat độc lập. Hàm trả lại giá trị p giả thuyết H0. p = anova2(X,reps) tính two-way ANOVA để so sánh trung bình của 2 hay nhiều cột và 2 hay nhiều hàng các quan sát trong ma trận X. Dữ liệu trong các cột tương ứng với các thay đổi trong yếu tố A, dữ liệu trong hàng tương ứng với thay đổi trong yếu tố B. Nếu có hơn một quan sát trong một tổ hợp ta dùng reps. Ví dụ: >>X = meshgrid(1:5); >>X = X + normrnd(0,1,5,5) >>X = -0.0741 2.7782 2.2129 4.0802 5.7902 1.2018 1.9937 3.7520 3.0627 5.1053 1.7629 2.5245 2.8331 4.6357 4.8414 -0.2882 3.3643 2.1838 5.6820 5.8709 0.0470 2.4820 5.0941 4.5936 4.8052 >>p = anova1(X) p = 4.0889e-007 Ví dụ: Có 2 yếu tố A và B. A có 3 cấp và B có 2 cấp. Dữ liệu A được xếp theo cột và B theo hàng. >>pop =[ 5.5000 4.5000 3.5000 5.5000 4.5000 4.0000 6.0000 4.0000 3.0000 6.5000 5.0000 4.0000 7.0000 5.5000 5.0000 7.0000 5.0000 4.5000]; >> p = anova2(pop,3) p = 0.0000 0.0001 0.7462 Phép so sánh a = =b (eq(a,b))- so sánh bằng: so sánh các phần tử của ma trận a và b. Phép so sánh nà trả về một ma trận có giá trị 1 nếu a(i,j)=b(i,j). a~ =b (ne(a,b))- khác a<b (lt(a,b))- nhỏ hơn a<=b (le(a,b) – nhỏ hơn hoặc bằng a>b (gt(a,b) – lớn hơn a>=b (ge(a,b))- lớn hơn hoặc bằng. Phép tính logic ~a (not(a)) cho một ma trận với phần tử là 1 nếu phần tử tương ứng của a là 0 và 0 nếu phần tử tương ứng của khác 0. a&b (and(a,b)) cho một ma trận có phần tử là 1 nếu phần tử tương ứng của a và b khác 0 và bằng 0 nếu một trong 2 phần tử tương ứng của a,b bằng 0. a|b (or(a,b) cho một ma trận có phần tử là 1 nếu một trong 2 phần tử tương ứng của a và b khác 0 và bằng 0 nếu cả 2 phần tử tương ứng của a,b bằng 0. xor(a,b) cho một ma trận có phần tử là 1 nếu chỉ một trong 2 phần tử tương ứng của a và b khác 0 và bằng 0 nếu cả 2 phần tử tương ứng của a,b bằng 0 hay khác không. Script Lệnh if Cú pháp: if expression statements end Ý nghĩa: MATLAB đánh giá expression, nếu expression cho giá trị true hay khác không, MATLAB sẽ thực hiện statement Cú pháp: if expression1 statements1 elseif expression2 statements2 else statements3 end Ý nghĩa: MATLAB đánh giá expression1, nếu expression1 cho giá trị true hay khác không, MATLAB sẽ thực hiện statement1. Nếu expression1 cho giá trị false và expression2 cho giá trị true sẽ thực hiện statement2. Lệnh switch Cú pháp: switch switch_expr case case_expr statement,...,statement case {case_expr1,case_expr2,case_expr3,...} statement,...,statement ... otherwise statement end Loop for Cú pháp: for varname=x:y:z statement statement end for varname=[a b c ...] statement statement end trong đó varname phải là tên biến. x, y, z có thể là số thực hay biểu thức Loop while Cú pháp while expression statements end Ý nghĩa: lập lại statement khi nào expression có tất cả phần tử khác không. Lệnh continue chuyển sang bước lặp tiếp theo Lệnh break ngừng và thoát ra vòng lặp. Lệnh return trở về chương trình đã gọi hàm hay script. Symbolic Math toolbox Bộ công cụ bộ sung khả năng giải tóan với các ký hiệu tóan học cho MATLAB. Lõi của bộ công cụ này được phát triễn bởi Maple. Nó cho phép thực hiện các phép tóan sau: Calculus: đạo hàm, tích phân, giới hạn, chuỗi. Đại số tuyến tính: nghịch đảo, định thức, giá trị eigen, Inverses, determinants, eigenvalues, singular value decomposition, and canonical forms of symbolic matrices. Rút gọn: dùng để rút gọn biểu thức. Giải phương trình: đại số và vi phân Các hàm đặc biệt: cung cấp các hàm đặcd biệt như beta, bessel, gamma. Transforms: Fourier, Laplace, z-transform. Symbolic object Để dùng được bộ công cụ ta phải định nghĩa một lọai dữ liệu đặc biệt khác với các lọai dữ liệu khác trong MATLAB- đó là symbolic (ký hiệu). Symbolic là một cấu trúc dữ liệu lưu lại chuỗi ký tự đại diện cho ký hiệu tóan học mà ta đang xử lý. ta dùng symbolic để biểu hiện một biến, biểu thức hay ma trận. Ví dụ: >> sqrt(2) ans = 1.4142 >>= sqrt(sym(2)) ans= 2^(1/2) Để khai báo một symbolic trong MATLAB, ta có thể dùng lệnh sym. Lệnh syms dùng để khai báo nhiều symbolic trong một dòng lệnh. Ví dụ: >> x=sym('x') x = x >>syms a b >> f=sin(a*x) f = sin(a*x) >> diff(f) ans = cos(a*x)*a Để xác định có bao nhiêu biến symbolic trong một biểu thức ta dùng lệnh findsym Ví dụ: >> findsym(f) ans = a, x Để thay thế giá trị vào một một biến symbolic ta dùng lệnh subs Ví dụ: >> subs(f,a,2) ans = sin(2*x) >> subs(f,{x,a},{2,5}) ans = -0.5440 Calculus Các hàm cho giải tích diff: đạo hàm. int: tích phân. jacobian: ma trận Jacobian limit: giới hạn symsum: tổng của một chuỗi. taylor: khai triễn chuỗi Taylor. Ví dụ: >> int(f) ans = -1/a*cos(a*x) >> taylor(f) ans = a*x-1/6*a^3*x^3+1/120*a^5*x^5 Rút gọn biểu thức: collect(f,v): gom đa thức theo biến v. expand: khai triển đa thức. factor: phân tích đa thức thành các nhân tử. horner: phân tích đa thức thành một biểu thức dạn Horner. numden: phân tích biểu thức thành dạng hữu tỷ. simple: đơn giản tối đa biểu thức. simplify: rút gọn biểu thức. Ví dụ: >> t=(x-2)^2+(x-2)^3+2 t = (x-2)^2+(x-2)^3+2 >> collect(t,x) ans = -2+x^3-5*x^2+8*x >> expand(t) ans = -2+x^3-5*x^2+8*x >> t=x^2 +2*a*x +a^2 ; >> factor(t) ans = (a+x)^2 Đồ thị Đồ thị 2D plot(X,Y) vẽ các điểm trong vector Y theo vector X Ví dụ: >>x=[1:0.2:20]; >> y=sin(x); >> plot(x,y) Hình. Đồ thị tạo ra bởi plot(x,y) Trong MATLAB đồ thị được tạo trong một window gọi là figure. Khi ta dùng một lệnh vẽ đồ thị, nếu trong MATLAB không có sẵn một figure, một figure mới sẽ được tạo ra. Nếu đã có một hay nhiều figure, thì đồ thị mới sẽ thay thế đồ thị cũ trong figure hiện hữu. Để tránh điều này ta có thể tạo nên một figure (empty) bằng lệnh figure Ví dụ: >> figure Hình. Empty figure Để vẽ chồng đồ thị (thay vì thay thế) lên một đồ thị có sẵn trong figure ta dùng lệnh hold on. Để bỏ chế độ vẽ chồng, ta dùng tiếp lệnh hold off. Ví dụ: >>z=cos(x); >>hold on >>plot(x,z) Hình. Dùng lệnh hold để vẽ chồng đồ thị Lệnh subplot(m,n,p) hay subplot(mnp) dùng để chia Figure window thành mxn ô đồ thị và chọn ô đồ thị thứ p làm ô hiện hành. Ô được xếp thứ tự theo hàng trên xuống dưới , từ trái sang phải. Ví dụ: >> figure >> subplot(1,2,1) >>plot(x,y) >> subplot(1,2,2) >> plot(x,z) Hình. Subplot bar(x,y) vẽ đồ thị cột với dữ liệu trong y theo x. Nếu y là ma trận mxn thì bar sẽ vẽ m nhóm. Mỗi nhóm có n cột. Để vẽ cột nằm ngang ta dùng barh. Để vẽ cột trong 3D dùng bar3 hay bar3h. Ví dụ: >> x=[1 3 6]; >> y=[5 12; 8 10 ; 12 5]; >> bar(x,y) Hình. Đồ thị bar hist(y,m) dùng để vẽ đồ thị histogram với dữ liệu trong y và m là số khỏang chia. errorbar(x,y,e) vẽ đồ thị x,y với dung sai [-e,+e]. Ví dụ: >> x=[1:0.1:2]; >> y=x.^3-2*x.^2; >> e=rand(1,length(x)); >> error(x,y,e) Hình. errorbar pie(x) dùng để vẽ đồ thị hình bánh ví dụ: >> x=[10 25 45]; >> pie(x) Hình. Đồ thị pie ezplot(f,[a,b]) vẽ biểu thức f trong khỏang [a,b] Ví dụ: >> ezplot('sin(x)/x',[-5,5]) Tùy biến đồ thị MATLAB cho phép ta thay đổi định dạng của đồ thị như: font chữ, kích thước chữ, kích thước đường, màu sắc, trục đồ thị v.v. Để thay đổi định dạng đồ thị ta có thể: Dùng menu File/Edit, chọn Figure propertiesđể thay đổi định dạng cho figure window, Axis propertiesđể thay đổi định dạng cho trục, Current Object properties để thay đổi định dạng cho đối tượng hiện hành. Chọn đối tượng mà ta muốn thay đổ định dạng và nhấn chuột phải để hiện lên menu lựa chọn. Để thêm các đối tượng như nhãn, văn bản, ghi chú, tiêu đề v.v. ta có thể dùng menu Insert. Để xuất đồ thị ra các dạng hình ảnh như jpg, gif, ta dùng menu File/Export As Đồ thị 3D Ta có vẽ đồ thị 3 chiều dùng các lệnh sau: plot3: tương tự như plot như có thêm trục z. mesh: tạo đồ thị 3D dưới dạng lưới (mesh). surf: tạo bề mặt 3D.
File đính kèm:
- buoc_dau_lam_viec_voi_matlab_gioi_thieu.doc