Bài giảng Phương pháp tính và Matlab: Chương 3.4 - Trường ĐH Bách khoa Hà Nội được biên soạn bao gồm các nội dung chính sau: Các hàm nhập dữ liệu Matlab; Các hàm xuất dữ liệu Matlab; Cung cấp một số ví dụ để các em sinh viên vận dụng, nắm vững kiến thức môn học. Mời các bạn cùng tham khảo chi tiết bài giảng tại đây.
Nhập, xuất liệu Nội dung Mở đầu Các thủ tục Các hàm m-file Nhập, xuất liệu Điều khiển luồng Vector hóa (Vectorization) Quản lý biến Input, Output Tính giá trị hàm cách gián tiếp Chú thích 10 Gỡ lỗi 11 Một số kinh nghiệm lập trình Matlab (SAMI-HUST) Lập trình Matlab Hà Nội, 17/87 tháng năm 2015 17 / 87 Nhập, xuất liệu Nhập, xuất liệu Các hàm nhập liệu Hàm input sử dụng để nhập liệu từ bàn phím Các tham số đầu vào hàm ưa dùng Các hàm xuất liệu Hàm disp sử dụng cho kết đơn giản Dùng hàm fprintf cho liệu định dạng trước (SAMI-HUST) Lập trình Matlab Hà Nội, 18/87 tháng năm 2015 18 / 87 Nhập, xuất liệu Nhập, xuất liệu Xuất liệu với disp fprintf Xuất liệu cửa sổ lệnh thực với hàm disp fprintf Nếu muốn ghi liệu vào file bắt buộc phải dùng hàm fprintf disp Sử dụng đơn giản Tuy nhiên việc điều khiển định dạng output hạn chế fprintf Tương đối phức tạp disp Cung cấp toàn cách điều khiển định dạng output (SAMI-HUST) Lập trình Matlab Hà Nội, 19/87 tháng năm 2015 19 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm disp Cú pháp disp(outMatrix) outMatrix ma trận số xâu Ví dụ >> disp(5) >> disp([x y]) >> x = 1:3; disp(x) >> disp([x’ y]) ??? Error using ==> horzcat >> y = 3-x; disp([x; y]) CAT arguments dimensions are not consistent (SAMI-HUST) Lập trình Matlab Hà Nội, 20/87 tháng năm 2015 20 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm disp Ví dụ >> disp(’Hello World!’) Hello World! >> s=’Have a nice day’; disp(s) Have a nice day >> t=’You are using Matlab 7.10.0’; >> disp([s;t]) ??? Error using ==> vertcat CAT arguments dimensions are not consistent >> disp(char(s,t)) Have a nice day You are using Matlab 7.10.0 (SAMI-HUST) Lập trình Matlab Hà Nội, 21/87 tháng năm 2015 21 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm disp Chú ý 4.1 Lệnh disp([s;t]) xuất lỗi s có ký tự t Hàm char tạo ma trận xâu cách đặt input dòng riêng chèn thêm khoảng trắng cần >> S=char(s,t); >> length(s), length(t), length(S(1,:)) ans = 15 ans = 27 ans = 27 (SAMI-HUST) Lập trình Matlab Hà Nội, 22/87 tháng năm 2015 22 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm num2str Hàm num2str thường dùng với hàm disp để tạo liệu đầu gán nhãn giá trị số Cú pháp stringValue=num2str(numericValue) chuyển numericValue thành xâu biểu diễn giá trị số Ví dụ >> num2str(pi) ans = 3.1416 (SAMI-HUST) Lập trình Matlab Hà Nội, 23/87 tháng năm 2015 23 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm num2str >> A=eye(3) A = 0 0 >> S=num2str(A) S = 0 0 0 Mặc dù A S chứa giá trị, chúng khơng tương đương A ma trận số cịn S ma trận xâu >> A-S ??? Error using ==> minus Matrix dimensions must agree (SAMI-HUST) Lập trình Matlab Hà Nội, 24/87 tháng năm 2015 24 / 87 Nhập, xuất liệu Nhập, xuất liệu Sử dụng num2str với disp >> x=sqrt(2); >> outString=[’x=’,num2str(x)]; >> disp(outString) x=1.4142 >> disp([’x=’,num2str(x)]) x=1.4142 (SAMI-HUST) Lập trình Matlab Hà Nội, 25/87 tháng năm 2015 25 / 87 Nhập, xuất liệu Nhập, xuất liệu Sử dụng num2str với disp Chú ý Cấu trúc disp([’x=’,num2str(x)]) làm việc x ma trận hàng với ma trận cột khơng >> y=1:4; >> z=y’; >> disp([’z=’,num2str(z)]) ??? Error using ==> horzcat CAT arguments dimensions are not consistent (SAMI-HUST) Lập trình Matlab Hà Nội, 26/87 tháng năm 2015 26 / 87 Nhập, xuất liệu Nhập, xuất liệu Sử dụng num2str với disp Thay vào đó, sử dụng hai lệnh disp để hiển thị cột vector hay ma trận >> disp(’z=’); disp(z) z= đơn giản nhập vào tên biến mà khơng có dấu ”;” cuối dịng >> z z = (SAMI-HUST) Lập trình Matlab Hà Nội, 27/87 tháng năm 2015 27 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm format Hàm format điều chỉnh độ xác liệu in >> format short >> disp(pi) 3.1416 >> format long >> disp(pi) 3.141592653589793 Ngồi ra, thơng số thứ hai hàm num2str dùng với mục đích >> disp([’pi=’,num2str(pi,2)]) pi=3.1 >> disp([’pi=’,num2str(pi,4)]) pi=3.142 >> disp([’pi=’,num2str(pi,8)]) pi=3.1415927 (SAMI-HUST) Lập trình Matlab Hà Nội, 28/87 tháng năm 2015 28 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm fprintf Cú pháp fprintf(outFormat, outVariables) fprintf(filehandle, outFormat, outVariables) sử dụng outFormat để chuyển outVariables thành xâu in Trong dạng đầu tiên, kết hiển thị cửa sổ lệnh Trong dạng thứ hai, kết lưu vào file tham chiếu fileHandle Ví dụ >> x=3; >> fprintf(’Square root of %g is %8.6f\n’,x,sqrt(x)) Square root of is 1.732051 (SAMI-HUST) Lập trình Matlab Hà Nội, 29/87 tháng năm 2015 29 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm fprintf Thành phần outFormat định rõ cách outVariables chuyển thành hiển thị Xâu outFormat chứa ký tự Nó phải chứa mã chuyển đổi cho outVariables Các mã chuyển đổi cho bảng sau: Mã %s %d %f %e %g \n \t (SAMI-HUST) Dạng dạng xâu dạng số nguyên dạng dấu chấm động dạng dấu chấm động ký hiệu khoa học dạng gọn %f %e chèn dòng sau xâu kết chèn tab sau xâu kết Lập trình Matlab Hà Nội, 30/87 tháng năm 2015 30 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm fprintf Ta định thêm độ rộng độ xác kết cú pháp: % wd % w.pf % w.pe w số ký tự độ rộng kết cuối p số chữ số sau dấu phẩy hiển thị Một số ví dụ Giá trị sqrt(2) sqrt(2e-11) sqrt(2e11) (SAMI-HUST) %8.4f 2.0000 1.4142 0.0000 447213.5955 %12.3e 2.000e+00 1.414e+00 4.472e-06 4.472e+05 Lập trình Matlab %10g 1.41421 4.47214e-06 447214 %8d 1.414214e+00 4.472136e-06 4.472136e+05 Hà Nội, 31/87 tháng năm 2015 31 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm fprintf Có thể dùng fprintf để in vector ma trận dạng ngắn gọn Điều dẫn tới kết khơng mong muốn Ví dụ >> x=1:4; y=sqrt(x); >> fprintf(’%9.4f\n’,y) 1.0000 1.4142 1.7321 2.0000 Ở đây, định dạng %9.4f sử dụng lại cho thành phần y Điều không cho kết mong muốn: >> fprintf(’y=%9.4f\n’,y) y= 1.0000 y= 1.4142 y= 1.7321 y= 2.0000 (SAMI-HUST) Lập trình Matlab Hà Nội, 32/87 tháng năm 2015 32 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm fprintf Hàm fprintf duyệt outVariables theo cột Điều dẫn đến kết khơng mong muốn >> A=[1 3; 6; 9] A = >> fprintf(’%8.2f %8.2f % 8.2f \n’, A ) 1.00 4.00 7.00 2.00 5.00 8.00 3.00 6.00 9.00 (SAMI-HUST) Lập trình Matlab Hà Nội, 33/87 tháng năm 2015 33 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm fprintf Xuất liệu file Để ghi liệu file cần phải tạo fileHandle với lệnh fopen Tất tác dụng định dạng vector hóa áp dụng Ví dụ Lưu thành phần vector vào file x=1:10; fout=fopen(’out.dat’,’wt’); fprintf(fout,’ k x(k)\n’); for k=1:length(x) fprintf(fout,’%4d % 5.2f\n’,k,x(k)); end fclose(fout) (SAMI-HUST) Lập trình Matlab Hà Nội, 34/87 tháng năm 2015 34 / 87 ... Các hàm nhập liệu Hàm input sử dụng để nhập liệu từ bàn phím Các tham số đầu vào hàm ưa dùng Các hàm xuất liệu Hàm disp sử dụng cho kết đơn giản Dùng hàm fprintf cho liệu định dạng trước (SAMI-HUST)... (SAMI-HUST) Lập trình Matlab Hà Nội, 22/87 tháng năm 2015 22 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm num2str Hàm num2str thường dùng với hàm disp để tạo liệu đầu gán nhãn giá trị số Cú pháp. .. z= đơn giản nhập vào tên biến mà khơng có dấu ”;” cuối dòng >> z z = (SAMI-HUST) Lập trình Matlab Hà Nội, 27/87 tháng năm 2015 27 / 87 Nhập, xuất liệu Nhập, xuất liệu Hàm format Hàm format điều