Viết hàm trong Matlab
2/9/20101Viế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.vnhắ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;endendif 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)elseelsedisp('khong co trong mang ')disp('khong co trong mang ')endend22 2/9/20102 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>>timsochuong trinh tim mot so trong mot mang sochuong trinh tim mot so trong mot mang sonhap 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: 5so can tim o vi tri 1so can tim o vi tri 133hậ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/20103Disp 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))55FunctionFunction 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.mfunction 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 466 2/9/20104Ví dụ functionVí dụ function Script: Script: % UBC.m% UBC.mfunction [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>> uocans = 9ans = 9>> boi>> boians = 1170ans = 117077Hà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 c lập trình c'>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 cp trình c'>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.mfunction c = chinh(A)function c = chinh(A)c = c = phuphu(A) (A) –– 11function 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 = 188 . 2/9/2010 1Viế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.vnhắc. 11707 7Hà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