Giáo trình Lập trình Matlab

pdf 79 trang huongle 2500
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình Matlab", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_lap_trinh_matlab.pdf

Nội dung text: Giáo trình Lập trình Matlab

  1. LẬP TRÌNH MATLAB HTHT
  2. CHƢƠNG 1: NHẬP MÔN MATLAB HTHT
  3. 1.1. Giới thiệu phần mềm MATLAB Matlab là một phần mềm cao cấp dùng để giải các bài toán và mô phỏng. Các file MATLAB có dạng *.m và chỉ chạy trong môi trường MATLAB. MATLAB xử lí số liệu như là ma trận. Khi ta đánh lệnh vào cửa sổ lệnh, nó sẽ được thi hành ngay và kết quả hiện lên màn hình. Nếu ta không muốn cho kết quả hiện lên màn hình thì sau lệnh ta đặt thêm dấu “;”. Nếu lệnh quá dài, không vừa một dòng dòng có thể đánh lệnh trên nhiều dòng và cuối mỗi dòng đặt thêm dấu Rồi Xuống dòng HTHT
  4. Khi soạn thảo lệnh ta có thể dùng các phím tắt : ↑ Ctrl‐P gọi lại lệnh trước đó ↓ Ctrl‐N gọi lệnh sau ← Ctrl‐B lùi lại một kí tự → Ctrl‐F tiến lên một kí tự Ctrl‐→ Ctrl‐R sang phải một từ Ctrl‐← Crtl‐L sang phải một từ home Ctrl‐A về đầu dòng end Ctrl‐E về cuối dòng esc Ctrl‐U xoá dòng del Ctrl‐D xoá kí tự tại chỗ con nháy đứng backspace Ctrl‐H xoá kí tự trước chỗ con nháy đứng HTHT
  5. 1.2. Các khái niệm cơ bản trong MATLAB 1.2.1. Các toán tử cơ bản Các phép toán cơ bản của MATLAB gồm: + cộng ‐ trừ * nhân / chia phải chia trái ^ luỹ thừa „ chuyển vị ma trận hay số phức liên hợp Các toán tử quan hệ : lớn hơn >= lớn hơn hoặc bằng == bằng ~= không bằng HTHT
  6. Các toán tử logic : & và | or ~ not HTHT
  7. 1.2.2.Nhập xuất dữ liệu từ dòng lệnh  MATLAB không đòi hỏi phải khai báo biến trước khi dùng.  MATLAB phân biệt chữ hoa và chữ thường.  Các số liệu đưa vào môi trường làm việc của MATLAB được lưu lại suốt phiên làm việc cho đến khi gặp lệnh clear all.  MATLAB cho phép ta nhập số liệu từ dòng lệnh. HTHT
  8. 1.2.3. Nhập xuất dữ liệu từ file MATLAB có thể xử lí hai kiểu file dữ liệu:  File nhị phân *.mat  File ASCII *.dat. Để lưu các ma trận A, B, C dưới dạng file nhị phân abc.mat ta dùng lệnh: save abc.mat A B C và nạp lại các ma trận A, B bằng lệnh: load abc A B Nếu muốn lưu số liệu của ma trận B dưới dạng file ASCII ta viết: save b.dat B /ascii đọc dữ liệu của tệp b.dat load b.dat HTHT
  9. 1.2.4. Nhập xuất dữ liệu từ bàn phím Lệnh input cho phép ta nhập số liệu từ bàn phím. Ví dụ: x = input(‟Nhap x: ‟) str=input(„Moi nhap chuoi ky tu:‟, „s‟); 1.2.5. Xuất dữ liệu ra màn hình display(bt_chuoi); disp(bt_chuoi); Hàm chuyển từ số sang chuỗi: num2str(bt_so); Hàm chuyển chuỗi số sang số str2num(bt_chuoi_so); HTHT
  10. CHƢƠNG 2 : MA TRẬN VÀ CÁC PHÉP TOÁN TRONG MA TRẬN CỦA MATLAB HTHT
  11. 2.1. Vectơ và ma trận Khái niệm: Vector được biểu diễn dưới dạng ma trận một hàng (mảng một chiều) A=[2 3 5 1 0 4] Ma trận được biểu diễn dưới dạng mảng hai chiều B=[ 2 5 1 6 4 2 1 9 6 4 8 7] HTHT
  12.  Khi nhập ma trận từ bàn phím ta phải tuân theo các quy định sau  ngăn cách các phần tử của ma trận bằng dấu “,” hay dấu trống  dùng dấu “;” để kết thúc một hàng  bao các phần tử của ma trận bằng cặp dấu ngoặc vuông [ ] HTHT
  13. 2.2. Các phép toán trong ma trận Giả sử ta tạo ra các ma trận a và b bằng các lệnh: a = [1 2 3; 4 5 6]; b = [3 ‐2 1]; Ta có thể sửa đổi chúng: A = [a; 7 8 9] B = [b; [1 0 ‐1]]ʹ „ là phép chuyển vị ma trận HTHT
  14. Chỉ số của các phần tử trong ma trận cấp m x n sẽ được đánh chỉ số: -Chỉ số cột từ 1 đến n - chỉ số hàng từ 1 đến m Truy nhập đến các phần tử của A ký hiệu A(i, j) vd: ma trận A gồm 5x10 là ma trận gồm 5 hàng 10 cột A(3,4) A(2,3) Xác định kích cỡ của ma trận -Length(A) trả về kích thước lớn nhất -Size(A) trả về số hàng số cột. VD [p,q]=size(A) HTHT
  15. c. Toán tử “:” : Toán tử “:” là một toán tử quan trọng của MATLAB. Nó xuất hiện ở nhiều dạng khác nhau. Ví dụ: 1:10 tạo một vec tơ hàng chứa 10 số nguyên từ 1 đến 10. Lệnh: 100: ‐7: 50 tạo một dãy số từ 100 đến 51, giảm 7 mỗi lần. Lệnh: 0: pi/4: pi tạo một dãy số từ 0 đến pi, cách đều nhau pi/4 HTHT
  16. Các biểu thức chỉ số tham chiếu tới một phần của ma trận. Viết A(1:k, j) là tham chiếu đến k phần tử đầu tiên của cột j. Ngoài ra toán tử “:” tham chiếu tới tất cả các phần tử của một hàng hay một cột. Ví dụ: B = A(:, [1 3 2 ]) tạo ra ma trận B từ ma trận A bằng cách đổi thứ tự các cột từ [1 2 3] thành [1 3 2] Lệnh B=A(:) chuyển ma trận A thành một cột HTHT
  17. d. Tạo ma trận bằng hàm có sẵn: MATLAB cung cấp một số hàm để tạo các ma trận cơ bản: zeros tạo ra ma trận mà các phần tử đều là zeros z = zeros(2, 4) ones tạo ra ma trận mà các phần tử đều là 1 x = ones(2, 3) y = 5*ones(2, 2) HTHT
  18. rand tạo ra ma trận mà các phần tử ngẫu nhiên phân bố đều d = rand(4, 4) randn tạo ra ma trận mà các phần tử ngẫu nhiên phân bố trực giao e = randn(3, 3) magic(n) tạo ra ma trận cấp n gồm các số nguyên từ 1 đến n2 với tổng các hàng bằng tổng các cột n phải lớn hơn hay bằng 3. pascal(n) tạo ra ma trận xác định dương mà các phần tử lấy từ tam giác Pascal. pascal(4) eye(n) tạo ma trận đơn vị eye(3) HTHT
  19. e. Lắp ghép: Ta có thể lắp ghép(concatenation) các ma trận có sẵn thành một ma trận mới. Ví dụ: a = ones(3, 3) b = 5*ones(3, 3) c = [a + 2; b] HTHT
  20. f. Xoá hàng và cột : Ta có thể xoá hàng và cột từ ma trận bằng dùng dấu []. Để xoá cột thứ 2 của ma trận b ta viết: b(:, 2) = [] Viết x(1: 2: 5) = [] nghĩa là ta xoá các phần tử bắt đầu từ đến phần tử thứ 5 và cách 2 rồi sắp xếp lại ma trận. HTHT
  21. g. Các lệnh xử lí ma trận: Cộng : X= A + B Trừ : X= A ‐ B Nhân : X= A * B : X.*A nhân các phần tử tương ứng với nhau Chia : X = A/B lúc đó X*B = A : X = A\B lúc đó A*X = B : X=A./B chia các phần tử tương ứng với nhau Luỹ thừa : X = A^2 : X = A.^2 Nghịch đảo : X = inv(A) Định thức : d = det(A) HTHT
  22. Một số hàm hỗ trợ khác HTHT
  23. Đối với dữ liệu nhập theo từng cột thì một nhóm các hàm cung cấp các công cụ phân tích dữ liệu cơ bản: HTHT
  24. CHƢƠNG 3 : CÁC HÀM GiẢI TÍCH SỐ VÀ ĐẠI SỐ TUYẾN TÍNH TRONG MATLAB HTHT
  25. 3.1. Các hàm đại số tuyến tính trong MATLAB Trong chương này chúng ta sẽ xét các phương pháp số để giải các phương trình đại số tuyến tính dạng: Các phương trình này có thể viết gọn dưới dạng: [A] [x] = [b] HTHT
  26. Ta sẽ xét 3 trường hợp:  số phương trình bằng số ẩn số nên ma trận [A] là ma trận vuông  số phương trình nhỏ hơn số ẩn số  số phương trình lớn hơn số ẩn số HTHT
  27. 1. Trường hợp không suy biến: Khi số phương trình m bằng số ẩn số n, ma trận [A] vuông và ta có: Vd: A=[2 3; 4 5] B= [1 ; 2] khi đó nghiệm của phương trình x= A^-1*B hay x=inv(A)*B (hàm inv là hàm tính ma trận nghịch đảo của A) 2x1+3x2=1 4x1+5x2=2 Nghiệm của phương trình là x1=0.5, x2=0 HTHT
  28. 2. Trường hợp số phương trình ít hơn số ẩn(nghiệm cực tiểu chuẩn): Nếu số phương trình m ít hơn số ẩn số n thì nghiệm không duy nhất. VD: x1+2x2=3 Nghĩa là A=*1 2+, b=3 Khi đó Matlap hỗ trợ hàm pinv để tìm nghiệm như sau: X=pinv(A)*b X=[0.6 1.2] HTHT
  29. 3. Trường hợp số phương trình nhiều hơn số ẩn(nghiệm sai số bình phương bé nhất): Nếu số phương trình m lớn hơn số ẩn số n thì không tồn tại nghiệm tho ả mãn đầy đủ các phương trình. Ta cố gắng tìm vec tơ nghiệm có sai số [e] nh ỏ nhất. Ma trận [A] có số hàng lớn hơn số cột cho nên không nghịch đảo được. Nghiệm sai số bình phương bé nhất tìm được nhớ dùng lệnh pinv hay phép chia trái Vd: A=[1;2] b=[2.1; 3.9] Khi đó nghiệm của phương trình X=pinv(A)*b X=1.98 Hay HTHT
  30. Vd: Viết hàm giải hệ phương trình tuyến tính HTHT
  31. Khi đó ta áp dụng với các hệ phương trình tuyến tính sau: a=[1 2 3; 3 2 4] b[1;3] x=pttt(a,b) a=[1 2; 3 4; 5 6] b=[1 ; 3; 5] x=pttt(a,b) HTHT
  32. Viết tệp xử l{ trên ma trận có tên xlmt.m để thực hiện các công việc sau: - nhập vào cấp của ma trận gồm m hàng, n cột - nhập giá trị của A(m,n) - Tìm giá trị lớn nhất của các cột hiện ra màn hình - tìm giá trị nhỏ nhất của các cột hiện ra màn hình - tính định thức cho ma trận A nếu ma trận A là ma trận vuông - nhập ma trận B gồm 1 cột và m hàng. sau đó giải phương trình tuyến tính có dạng Ax=B (bằng cách áp dụng pttt đã xây dựng truớc) viết kết quả ra màn hình hàm if có cú pháp như sau: if btdk câu lênh 1; [elseif btdk câu lệnh 2;+ else câu lệnh 3; end HTHT
  33. function xlmt m=input('moi nhap m='); n=input('moi nhap n='); for i=1:n for j=1:m A(i,j)=input(['nhap gia tri A(',num2str(i),',',num2str(j),'):']); end end A HTHT
  34. CHƢƠNG 4. ĐỒ HỌA TRONG MATLAP HTHT
  35. 4.1. Đồ họa 2D Khái niệm: Đồ thị Dữ liệu về khoa học và kỹ thuật được xét đến ở dạng đồ thị trong MATLAB bằng cách dùng các lệnh về đồ họa để tạo ra hình vẽ trên màn hình. Có nhiều kiểu đồ họa khác nhau có thể chọn: plot Vẽ đường tuyến tính x-y vd: x=0:1:5; y= x.^2*5; plot(x,y) loglog Vẽ loga x-y vd: loglog(x,y) semilogx Vẽ bán loga x-y (loga trục x) semilogy Vẽ bán loga x-y (loga trục y) polar Vẽ tọa độ cực vd: t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t),' r') bar Vẽ biểu đồ vd: bar(x,y) stairs Vẽ đồ thị bậc thang HTHT
  36. Khi một đồ thị có trên màn hình thì có thể có nhãn, tiêu đề, hoặc các dòng lưới theo: title Tiêu đề đồ thị xlabel Nhãn trục x ylabel Nhãn trục y text Văn bản ở vị trí bất kỳ gtext Văn bản ở vị trí chuột grid Các dòng lưới HTHT
  37. Hình vẽ trong mặt phẳng oxy Lệnh plot tạo ra các hình vẽ mặt phẳng oxy. Khi lệnh plot là chủ thì các hình vẽ loga và cực được tạo ra bằng cách thay các từ loglog, semilogx, semilogy, hoặc polar cho từ plot. Cả 5 lệnh được dùng cùng một cách; chúng chỉ ảnh hưởng đến cách chia trục và cách hiển thị dữ liệu. HTHT
  38. Nếu Y là một vectơ thì lệnh plot(Y) cho ra một hình vẽ gồm các phần tử của Y đối số là chỉ số của các phần tử của Y. Ví dụ, để vẽ các số {0., .48, .84, 1, .91, .6, .14}, nhập chúng vào một vectơ và thực hiện lệnh plot: Y = [0. .48 .84 1. .91 .6 .14]; plot(Y) HTHT
  39. một tiêu đề đồ thị, nhãn trục X và nhãn trục Y, và các dòng lưới có thể đặt vào hình vẽ bằng cách nhập liên tục vào các lệnh title('My first plot') xlabel('fortnights') ylabel(furlongs') grid HTHT
  40. Hàm gtext('text') cho phép chuột hoặc các phím mũi tên định vị bằng một dấuchữ thập trên đồ thị, ở điểm mà văn bản sẽ đặt khi có phím hoặc nút chuột được nhấn. Vd: gtext(‘text’); gtext(‘chu thich’) HTHT
  41. Nhiều đường trên cùng đồ thị Có hai cách để vẽ nhiều đường trên một đồ thị đơn. Thứ nhất là cho lệnh plot với 2 đối số, như plot(X,Y), ở đây hoặc là X, hoặc là Y, hoặc là cả hai là ma trận. Sau đó: [1] Nếu Y là ma trận và X là vectơ, thì plot(X,Y) vẽ liên tục các dòng hoặc các cột của Y đối số là vectơ X, dùng kiểu đường khác nhau cho mỗi dòng hoặc cột. Việc "định hướng" dòng hay cột của Y được chọn để có cùng số phần tử như vectơ X. Nếu Y là ma trận vuông thì tự chọn hướng cột. [2] Nếu X là ma trận và Y là vectơ, thì các quy tắc trên được áp dụng, ngoại trừ các đường từ X được vẽ đối số là vectơ Y. [3] Nếu cả X và Y là ma trận cùng cỡ, thì plot(X,Y) vẽ các cột của X đối số là các cột của Y. [4] Nếu không chỉ định X, như plot(Y), ở đây Y là ma trận, thì các đường được vẽ cho mỗi cột của Y đối số là chỉ số dòng. HTHT
  42. Cách thứ hai và dễ dàng hơn để vẽ nhiều đường trên một đồ thị đơn là dùng lệnh plot với nhiều đối số: plot(X1, Y1, X2, Y2, , Xn, Yn) Các biến X1, Y1, X2, Y2, là các cặp vectơ. Mỗi cặp x-y đựoc vẽ, phát sinh ra nhiều đường trên đồ thị. Phương pháp nhiều đối số có điều thuận lợi là cho phép các vectơ có dộ dài khác nhau hiển thị trên cùng một đồ thị. Như trước đây, mỗi cặp dùng một kiểu đường khác nhau. HTHT
  43. Kiểu đường và kiểu điểm 1. Kiểu Kiểu đường dùng trong đồ thị có thể điều khiển nếu không thỏa mãn kiểu ngầm định . Cũng có thể vẽ điểm bằng các ký hiệu khác nhau. Ví dụ: plot(X,Y,'x') vẽ một hình vẽ điểm bằng cách dùng các dấu x trong khi plot(X1,Y1,':',X2,Y2,'+') dùng đường chấm chấm cho đường cong thứ nhất và dấu + cho đường cong thứ hai. Các kiểu đường và kiểu điểm khác là: HTHT
  44. 2. Màu Trong hệ thống có cung cấp màu, thì màu đường và màu điểm có thể chỉ định theo cách tương tự kiểu đường và kiểu điểm. Ví dụ, các lệnh plot(X,Y,'r') plot(X,Y,'+g') dùng màu đỏ cho đồ thị thứ nhất và dấu + màu xanh cho đồ thị thứ hai. Các màu khác là: màu Đỏ r Xanh lá cây g Xanh nước biển B Trắng W Vàng y HTHT
  45. Hình vẽ loga, cực, và biểu đồ Cách dùng các lệnh loglog, semilogx, semilogy, và polar là giống như lệnh plot. Các lệnh này cho phép dữ liệu được vẽ theo các kiểu khác nhau, nghĩa là trong các hệ tọa độ khác nhau: HTHT
  46. Hàm fplot vẽ theo phương trình biểu thức theo đối số có giới hạn Cp: fplot(biểu_thức, giới hạn) Biểu thức có thể là hàm có trƣớc: function Y = myfun(x) Y = 200*sin(x(:))./x(:); Khi đó ta có thể gọi hàm để vẽ như sau: fn=@myfun; fplot(fn, [-10 10] 200 150 100 50 0 -50 -20 -15 -10 -5 0 5 10 15 20 HTHT
  47. + Biểu thức có thể là biểu thức với đối số cho trƣớc: Fn=@(x) x^2+3*x+5 ; % @x cho biết đối số của biểu thức là x fplot(Fn, [-10 10]) 500 450 400 350 300 250 200 150 100 50 0 -20 -15 -10 -5 0 5 10 15 20 HTHT
  48. 4.2. Đồ họa 3D (Mặt và lưới)10 a. Mặt Để vẽ mặt của ba giá trị X, Y, Z 5 0 Cú pháp: surf(Z) -5 surf(Z,C) -10 surf(X,Y,Z) 4 2 4 surf(X,Y,Z,C) 0 2 0 -2 -2 -4 Z, X, Y, C: phải là mảng giá trị hai chiều -4 Ví dụ: 10 [X,Y,Z] = peaks(30); surf(X,Y,Z) %hình trên 5 0 -5 surfc(X,Y,Z) %hình dưới -10 4 surfz(X,Y,Z) % đế của mặt 2 4 0 2 0 -2 -2 HTHT -4 -4
  49. Vẽ mặt cầu k = 5; n = 2^k-1; [x,y,z] = sphere(n); c = hadamard(2^k); surf(x,y,z,c); colormap([1 1 0; 0 1 1]) axis equal 1 0.5 0 -0.5 -1 0.5 0 0.5 0 -0.5 -0.5 HTHT
  50. b. Lưới Để vẽ được mặt trong đồ thị 3 – D cần phải tạo ra các mảng 3 chiều từ mảng 1 chiều Tạo ra mảng ba chiều cho X và Y từ mảng một chiều x, y *X,Y+ = meshgrid(x,y) % tạo ra lưới cho X và Y từ mảng x, y [X,Y] = meshgrid(x) [X,Y,Z] = meshgrid(x,y,z) % tạo lưới cho X,Y , Z từ x,y ,z [X,Y] = meshgrid(1:3,10:14) HTHT
  51. Vẽ mặt cho mảng ba chiều X, Y, Z đã tạo mesh(X,Y,Z) Ví dụ: [X,Y] = meshgrid(-3:.125:3); Z = peaks(X,Y); % tạo ra ma trân Z có điểm đỉnh trong miền của X,Y meshc(X,Y,Z); axis([-3 3 -3 3 -10 5]) 5 0 -5 -10 2 3 2 0 1 0 -1 -2 -2 -3 HTHT
  52. 0.5 Vd: vẽ theo đa thức bất kz [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); 0 surf(X,Y,Z) -0.5 2 1 2 0 1 0 -1 -1 Vd: -2 -2 [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = (X.^2 - Y.^2); mesh(X,Y,Z) 4 2 0 -2 -4 2 1 2 0 1 0 -1 -1 -2 -2 HTHT
  53. Ví dụ mặt lưới của ma trận đơn vị mesh(eye(14)) 1 0.8 0.6 0.4 0.2 0 15 14 10 12 10 8 5 6 4 2 0 0 HTHT
  54. Xét hàm sin(r)/r hay sinc mà kết quả là mặt mũ phớt rộng vành mà mọi người ưa nhìn Một cách tạo ra là: x = -8:.5:8; % xác định miền giá trị y = x'; X = ones(size(y))*x; % tạo ra ma trận X gồm các dòng lăp Y = y*ones(size(x)); % tạo ra ma trận y tương ứng từ x R = sqrt(X .^2 + Y .^2) + eps; %xác định tâm, gốc Z = sin(R)./R; % xác định Z từ X mesh(Z) % vẽ hình 3D HTHT
  55. 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 40 30 35 30 20 25 20 15 10 10 5 0 0 HTHT
  56. Có thể tách cửa sổ đồ họa thành nhiều phần, nhằm để xem một số hình vẽ cùng một lúc. Lệnh subplot(m,n,p) cắt cửa sổ đồ họa thành mxn lưới và dùng hộp thứ p cho hình vẽ tiếp sau. Ví dụ, subplot(2, 1, 1), plot(abs(y)) subplot(2, 1, 2), plot(angle(y)) cắt màn hình thành hai, vẽ độ dài của vectơ phức trong nữa trên, và vẽ góc pha trong nữa dưới. Lệnh subplot(1, 1, 1), hoặc đúng subplot, trở về cửa sổ đơn ngầm định là toàn màn hình. HTHT
  57. CHƢƠNG 5. LẬP TRÌNH TRONG MATLAB HTHT
  58. 5.1. Giới thiệu chương trình, câu lệnh trong Matlab HTHT
  59. 5.2. Các cấu trúc điều khiển trong Matlab Câu lệnh rẽ nhánh if Cp: if bieu_thuc_dieu_kien if bieu_thuc_dieu_kien_1 khối câu lệnh khối câu lệnh 1 end elseif bieu_thuc_dieu_kien_2 khối câu lệnh 2 else if bieu_thuc_dieu_kien khối câu lệnh 3 khối câu lệnh 1 end else khối câu lệnh 2 end HTHT
  60. Câu lệnh lặp for for biến_đếm=giá_trị_đầu: bước_nhảy: giá_trị_cuối khối câu lênh end HTHT
  61. Câu lệnh lặp while Cp: while bieu_thuc_dieu_kien khối câu lệnh end HTHT
  62. 5.3. Các thao tác với tệp trong Matlab HTHT
  63. a. Mở tệp Bien_tep = fopen( tên_tệp) Bien_tep = fopen( tên_tệp, giới_hạn) Giới hạn Chức năng 'r' Mở tệp để đọc nội dung (mặc định). 'w' Mở tập tin hoặc tạo tập tin mới, ghi nội dung mới, loại bỏ nội dung hiện tại, nếu có. 'a' Mở tập tin hoặc tạo tập tin mới, nối thêm dữ liệu vào cuối của tập tin. 'r+' Mở tập tin để đọc và viết. 'w+' Mở tập tin hoặc tạo tập tin mới, để đọc và viết, loại bỏ nội dung hiện tại, nếu có. 'a+' Mở tập tin, hoặc tạo tập tin mới, để đọc và viết; nối thêm dữ liệu vào cuối của tập tin. 'A’ Bổ sung mà không cần chèn tự động, được sử dụng với các ổ đĩa băng. 'W' Viết mà không cần chèn tự động, được sử dụng với các ổ đĩa băng. HTHT
  64. b. Đọc dữ liệu trong tệp fread(biến_tệp) % đọc toàn bộ dữ liệu fread(biến_tệp, n) % đọc n byte từ vị trí hiện tại trong tệp fread(biến_tệp, inf ) % đọc từ đầu đến cuối (mặc định) fread(biến_tệp, n, định_dạng_dữ liệu) Định_dạng_dữ_liệu: MATLAB C or Fortran Interpretation 'char' 'char*1' Character 'short' 'short' Integer; 16 bits 'int' 'int' Integer; 32 bits 'long' 'long' Integer; 32 or 64 bits 'ushort' 'unsigned short' Unsigned integer; 16 bits 'uint' 'unsigned int' Unsigned integer; 32 bits 'ulong' 'unsigned long' Unsigned integer; 32 or 64 bits 'float' 'float' Floating-point; 32 bits HTHT
  65. MATLAB C or Fortran Interpretation 'schar' 'signed char' Signed integer; 8 bits 'uchar' 'unsigned char' Unsigned integer; 8 bits 'int8' 'integer*1' Integer; 8 bits 'int16' 'integer*2' Integer; 16 bits 'int32' 'integer*4' Integer; 32 bits 'int64' 'integer*8' Integer; 64 bits 'uint8' 'integer*1' Unsigned integer; 8 bits 'uint16' 'integer*2' Unsigned integer; 16 bits 'uint32' 'integer*4' Unsigned integer; 32 bits 'uint64' 'integer*8' Unsigned integer; 64 bits 'float32' 'real*4' Floating-point; 32 bits 'float64' 'real*8' Floating-point; 64 bits 'double' 'real*8' Floating-point; 64 bits HTHT
  66. Ví dụ: Đọc một chuỗi từng byte dữ liệu trong tệp nhị phân ra mảng A fid = fopen(„dulieu.txt‟,'r') A = fread(fid); % đọc theo dữ liệu số uint8 A = fread(fid,‟*char‟); % đọc theo dữ liệu ký tự A = A'; fclose(fid); HTHT
  67. Đánh dấu vị trícon trỏ tệp fseek(biến_tệp, vị_trí_cần_đến, vị_trí_mốc) Trong đó: Vị_trí_mốc: có các vị trí sau: „bof‟ : bắt đầu tệp „cof‟ : vị trí hiện tại của tệp „eof‟ : vị trí cuối tệp Ví dụ: đưa con trỏ tệp đến vị trí thứ 8 trong tệp fseek(f,8,‟bof‟) HTHT
  68. c. Ghi dữ liệu vào tệp fwrite (biến_tệp, dữ_liệu) fwrite (biến_tệp, dữ_liệu, định_dạng_dữ_liệu) Dữ_liệu là một mảng giá trị số, chuỗi ký tự Định_dạng_dữ_liệu: MATLAB C or Fortran Interpretation 'char' 'char*1' Character 'short' 'short' Integer; 16 bits 'int' 'int' Integer; 32 bits 'long' 'long' Integer; 32 or 64 bits 'ushort' 'unsigned short' Unsigned integer; 16 bits 'uint' 'unsigned int' Unsigned integer; 32 bits 'ulong' 'unsigned long' Unsigned integer; 32 or 64 bits 'float' 'float' Floating-point; 32 bits HTHT
  69. Ví dụ: tạo tệp data.txt và ghi chuỗi „data in file‟ vào tệp fid = fopen(„data.txt‟,'w'); A=„data in file‟; fwrite(fid, A); fclose(fid); HTHT
  70. d. Đóng tệp đang mở fclose(biến_tệp) fclose('all') % đóng tất cả các tệp đang mở HTHT
  71. Tạo tệp xulytep.m thực hiện các công việc sau: -Nhập tệp bất kỳ -Đọc tệp, in nội dung tệp ra màn hình -Thực hiện di chuyển con trỏ tệp theo yêu cầu từ bàn phím - Đọc dữ liệu (dạng ký tự) tại vị trí con trỏ đang đứng ra màn hình -Lưu toàn bộ nội dung tệp đang mở sang tệp mới với tên nhập vào từ bàn phím - Bổ sung một vài ký tự vào tệp đầu tiên HTHT
  72. CHƢƠNG 6. THIẾT KÊ GIAO DIỆN TRONG MATLAB HTHT
  73. Môi trường làm việc của GUID (hướng dẫn trên môi trường Matlab) Các bước thiết kế giao diện (hướng dẫn trên môi trường Matlab) HTHT
  74. Gắn lệnh (chương trình) cho các nút lệnh HTHT
  75. Ví dụ minh họa: Viết giao diện thực hiện các phép tính đơn giản: cộng, trừ, nhân, chia trên hai số HTHT
  76. Tạo menu lệnh trên GUID (hướng dẫn trên môi trường Matlab) HTHT
  77. GIAO ĐỀ TÀI BẢO VỆ MÔN HỌC CHO SINH VIÊN VÀ HƯỚNG DẪN THỰC HiỆN HTHT