Giáo trình Lập trình Matlab
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:
- giao_trinh_lap_trinh_matlab.pdf
Nội dung text: Giáo trình Lập trình Matlab
- LẬP TRÌNH MATLAB HTHT
- CHƢƠNG 1: NHẬP MÔN MATLAB HTHT
- 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
- 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
- 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
- Các toán tử logic : & và | or ~ not HTHT
- 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
- 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
- 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
- CHƢƠNG 2 : MA TRẬN VÀ CÁC PHÉP TOÁN TRONG MA TRẬN CỦA MATLAB HTHT
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Một số hàm hỗ trợ khác HTHT
- Đố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
- CHƢƠNG 3 : CÁC HÀM GiẢI TÍCH SỐ VÀ ĐẠI SỐ TUYẾN TÍNH TRONG MATLAB HTHT
- 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
- 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
- 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
- 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
- 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
- Vd: Viết hàm giải hệ phương trình tuyến tính HTHT
- 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
- 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
- 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
- CHƢƠNG 4. ĐỒ HỌA TRONG MATLAP HTHT
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- + 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- CHƢƠNG 5. LẬP TRÌNH TRONG MATLAB HTHT
- 5.1. Giới thiệu chương trình, câu lệnh trong Matlab HTHT
- 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
- 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
- Câu lệnh lặp while Cp: while bieu_thuc_dieu_kien khối câu lệnh end HTHT
- 5.3. Các thao tác với tệp trong Matlab HTHT
- 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
- 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
- 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
- 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
- Đá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
- 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
- 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
- d. Đóng tệp đang mở fclose(biến_tệp) fclose('all') % đóng tất cả các tệp đang mở HTHT
- 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
- CHƢƠNG 6. THIẾT KÊ GIAO DIỆN TRONG MATLAB HTHT
- 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
- Gắn lệnh (chương trình) cho các nút lệnh HTHT
- 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
- Tạo menu lệnh trên GUID (hướng dẫn trên môi trường Matlab) HTHT
- GIAO ĐỀ TÀI BẢO VỆ MÔN HỌC CHO SINH VIÊN VÀ HƯỚNG DẪN THỰC HiỆN HTHT