2/9/2010 1 Viết hàm trong MatlabViết hàm trong Matlab …nhập, xuất ……nhập, xuất … …function……function… 11ntnhut@hcmus.edu.vnntnhut@hcmus.edu.vn hắc lại file script .mhắc lại file script .m Ví dụ: soạn thảo script sau lưu vào file ‘timso.m’Ví dụ: soạn thảo script sau lưu vào file ‘timso.m’ disp('chuong trinh tim mot so trong mot mang so')disp('chuong trinh tim mot so trong mot mang so') a = input('nhap vao mang so : ');a = input('nhap vao mang so : '); key = input('nhap vao so can tim: ');key = input('nhap vao so can tim: '); k = 1;k = 1; n = length(a);n = length(a); while (k<=n)&(a(k)~=key) while (k<=n)&(a(k)~=key) k = k+1;k = k+1; endend if k<=n if k<=n fprintf('so can tim o vi tri %d fprintf('so can tim o vi tri %d \\n', k)n', k) elseelse disp('khong co trong mang ')disp('khong co trong mang ') endend 22 2/9/2010 2 Khi thực thi file ‘timso.m’ trên cửa sổ dòng lệnh Matlab:Khi thực thi file ‘timso.m’ trên cửa sổ dòng lệnh Matlab: >>timso>>timso chuong trinh tim mot so trong mot mang sochuong trinh tim mot so trong mot mang so nhap vao mang so : [5 2 1 nhap vao mang so : [5 2 1 1 0 5]1 0 5] nhap vao so can tim: 5nhap vao so can tim: 5 so can tim o vi tri 1so can tim o vi tri 1 33 hập / Xuấthập / Xuất Nhập:Nhập: x = input(‘chuoi thong bao’)x = input(‘chuoi thong bao’) XuấtXuất:: disp(‘chuoi ky tu’)disp(‘chuoi ky tu’) fprintf(‘chuoi co dinh dang’)fprintf(‘chuoi co dinh dang’) Định dạng của Định dạng của fprintffprintf:: %d%d: số nguyên: số nguyên %f %f : số chấm động: số chấm động %s %s : chuỗi: chuỗi %c %c : ký tự: ký tự \\n n : xuống dòng: xuống dòng \\t t : TAB: TAB \\\\ : ký tự ‘: ký tự ‘\\’’ %% %% : ký tự ‘%’: ký tự ‘%’ Ví dụ:Ví dụ: x = input(‘nhap 1 so nguyen x = ’); x = input(‘nhap 1 so nguyen x = ’); fprintf(‘gia tri cua x la %d’, x);fprintf(‘gia tri cua x la %d’, x); 44 2/9/2010 3 Disp và fprintfDisp và fprintf Ví dụ 1:Ví dụ 1: a = input(‘So thu nhat = ’);a = input(‘So thu nhat = ’); b = input(‘So thu hai = ’);b = input(‘So thu hai = ’); disp(‘UCL cua a va b la ’)disp(‘UCL cua a va b la ’) disp(gcd(a,b))disp(gcd(a,b)) disp(‘BC cua a va b la ’)disp(‘BC cua a va b la ’) disp(lcm(a,b))disp(lcm(a,b)) Ví dụ 2: Ví dụ 2: a = input(‘So thu nhat = ’);a = input(‘So thu nhat = ’); b = input(‘So thu hai = ’);b = input(‘So thu hai = ’); fprintf(‘UCL cua %d va %d la %d fprintf(‘UCL cua %d va %d la %d \\n’, a, b, gcd(a,b))n’, a, b, gcd(a,b)) fprintf(‘BC cua %d va %d la %d fprintf(‘BC cua %d va %d la %d \\n’, a, b, lcm(a,b))n’, a, b, lcm(a,b)) 55 FunctionFunction HàmHàm trong Matlab là một file.m có thể nhận tham số trong Matlab là một file.m có thể nhận tham số và trả về các giá trị.và trả về các giá trị. Tên hàm phải trùng với tên file.m. Gọi lệnh bằng cách Tên hàm phải trùng với tên file.m. Gọi lệnh bằng cách gõ tên hàm (tên file.m)gõ tên hàm (tên file.m) Cú pháp:Cú pháp: function tri_tra_ve = ten_ham(tham_so)function tri_tra_ve = ten_ham(tham_so) Ví dụ: Ví dụ: % tbc.m% tbc.m function s = tbc(x)function s = tbc(x) s = sum(x(:))/length(x(:));s = sum(x(:))/length(x(:)); Gọi lệnh:Gọi lệnh: >>t = tbc([2 3 4 5 6]) >>t = tbc([2 3 4 5 6]) % t sẽ bằng 4% t sẽ bằng 4 66 2/9/2010 4 Ví dụ functionVí dụ function Script: Script: % UBC.m% UBC.m function [m,n] = UBC(a,b)function [m,n] = UBC(a,b) m = gcd(a,b);m = gcd(a,b); n = lcm(a,b);n = lcm(a,b); Gọi hàm:Gọi hàm: >> [uoc, boi] = UBC(45,234)>> [uoc, boi] = UBC(45,234) >> uoc>> uoc ans = 9ans = 9 >> boi>> boi ans = 1170ans = 1170 77 Hàm phụHàm phụ Hàm phụHàm phụ (khác tên hàm chính) chỉ nhằm hỗ trợ tính toán (khác tên hàm chính) chỉ nhằm hỗ trợ tính toán cho hàm chính trong script hàmcho hàm chính trong script hàm Hàm phụ nằm sau hàm chínhHàm phụ nằm sau hàm chính Ví dụ: Ví dụ: % chinh.m% chinh.m function c = chinh(A)function c = chinh(A) c = c = phuphu(A) (A) –– 11 function d = function d = phuphu(B)(B) d = min(B(:))d = min(B(:)) Gọi hàm:Gọi hàm: >> chinh([23 2 34])>> chinh([23 2 34]) ans = 1ans = 1 88 . 2/9/2010 1 Viết hàm trong MatlabViết hàm trong Matlab …nhập, xuất …nhập, xuất … …function……function… 11ntnhut@hcmus.edu.vnntnhut@hcmus.edu.vn hắc lại. ph Hàm phụ (khác tên hàm chính) chỉ nhằm hỗ trợ tính toán (khác tên hàm chính) chỉ nhằm hỗ trợ tính toán cho hàm chính trong script hàmcho hàm chính trong script hàm Hàm phụ nằm sau hàm. lcm(a,b)) 55 FunctionFunction HàmHàm trong Matlab là một file.m có thể nhận tham số trong Matlab là một file.m có thể nhận tham số và trả về các giá trị.và trả về các giá trị. Tên hàm phải trùng với