Professional Documents
Culture Documents
Chapter 6. Làm Việc Với M-file Và Quản Lý Dữ Liệu. Slides
Chapter 6. Làm Việc Với M-file Và Quản Lý Dữ Liệu. Slides
VÀ QUẢN LÝ DỮ LIỆU
• Workspace và các lệnh who, whos, clear, clear all
• Cách thức tạo giá trị input cho một m-file
• Các lệnh output để xuất dữ liệu
• Các lệnh save và load
• Các lệnh import dữ liệu vào MATLAB
WORKSPACE VÀ CÁC LỆNH who, whos, clear, clear all
>> clear a
trungbinhabc_1.m
% Bài toán: nhập giá trị cho 3 số a,b,c và tính giá trị trung bình của chúng
% Các giá trị a,b,c được nhập từ bên trong m-file
a = 2; b = 3; c = 4;
trung_binh = (a + b + c)/3
>> trungbinhabc_1
trung_binh =
3
CÁCH THỨC TẠO GIÁ TRỊ INPUT CHO MỘT M-FILE
2. Các biến được tạo và gán giá trị bên ngoài m-file từ Command Window
trungbinhabc_2.m
% Bài toán: nhập giá trị cho 3 số a,b,c và tính giá trị trung bình của chúng
% Các giá trị a,b,c được nhập từ bên ngoài m-file từ Command Window
trung_binh = (a + b + c)/3
>> a = 4; b = 6; c = 26;
>> trungbinhabc_2
trung_binh =
12
CÁCH THỨC TẠO GIÁ TRỊ INPUT CHO MỘT M-FILE
3. Các biến được tạo bên trong m-file nhưng được gán giá trị bên ngoài m-file từ
Command Window bằng lệnh input
trungbinhabc_3.m
% Bài toán: nhập giá trị cho 3 số a,b,c và tính giá trị trung bình của chúng
% Các giá trị a,b,c được nhập từ bên ngoài m-file bằng lệnh input
>> trungbinhabc_3
Moi ban nhap gia tri cho a 5
Moi ban nhap gia tri cho b 3
Moi ban nhap gia tri cho c 10
trung_binh =
6
CÁCH THỨC TẠO GIÁ TRỊ INPUT CHO MỘT M-FILE
Ví dụ:
>> a = 100;
>> disp(a)
100
>> b = rand(2,2);
>> disp(b)
0.3532 0.0154
0.8212 0.0430
trungbinhabc_4.m
% Bài toán: nhập giá trị cho 3 số a,b,c và tính giá trị trung bình của chúng
% Các giá trị a,b,c được nhập từ bên ngoài m-file bằng lệnh input
% Hiển thị thông báo đáp số ra ngoài màn hình bằng lệnh disp
>> trungbinhabc_4
Moi ban nhap gia tri cho a 2
Moi ban nhap gia tri cho b 5
Moi ban nhap gia tri cho c 14
>> bangdanso
NAM DAN SO
(trieu nguoi)
1984 127
1986 130
1988 136
1990 145
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
2. Lệnh fprintf có thể dùng để hiện thị các output ra ngoài màn hình hoặc ghi
chúng vào các file lưu trữ
a) Dùng fprintf để hiển thị chuỗi ký tự
>> fprintf('Chao buoi sang. Chuc ban mot ngay vui ve')
Chao buoi sang. Chuc ban mot ngay vui ve>> a = 2
a=
>> fprintf('Chao buoi sang. \n Chuc ban mot ngay vui ve \n')
Chao buoi sang.
Chuc ban mot ngay vui ve
>>
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
Khác với disp là mỗi lệnh một dòng, với fprintf, muốn xuống dòng thì luôn phải sử
dụng \n
b) Dùng fprintf để hiển thị chuỗi ký tự kết hợp với dữ liệu giá trị số
fprintf ( ‘..text....%f....%g...%f...’ , biến 1, biến 2, biến 3 )
% Bài toán: nhập giá trị cho 3 số a,b,c và tính giá trị trung bình của chúng
% Các giá trị a,b,c được nhập từ bên ngoài m-file bằng lệnh input
% Hiển thị thông báo đáp số ra ngoài màn hình bằng lệnh fprintf
quangduong.m
% Bài toán: tính toán quãng đường đi được của vật thể
% Hiển thị thông báo đáp số bằng lệnh fprintf
v = input ('Moi ban nhap gia tri van toc (km/h) ');
t = input('Moi ban nhap gia tri thoi gian (h) ');
s = v*t;
fprintf('Mot vat co van toc %3.2f (km/h) di chuyen trong thoi gian %4.2f (h) se
di duoc quang duong la %5.3f (km) \n', v, t, s)
>> quangduong
Moi ban nhap gia tri van toc (km/h) 4.325
Moi ban nhap gia tri thoi gian (h) 53.123
Mot vat co van toc 4.33 (km/h) di chuyen trong thoi gian 53.12 (h) se di duoc
quang duong la 229.757 (km)
>>
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
%-5.2f
%-5.2f
FLAG \
Giá trị Ý nghĩa Ví dụ Giá trị Ý nghĩa
- Căn trái %-5.2f \b backspace
+ Hiển thị dấu +, - %+5.2f \f form feed
space Thêm space vào trước % 5.2f \n new line
giá trị biến \r carriage return
0 Thêm 0 vào trước %05.2f \t horizontal tab
những giá trị ngắn
\\ backslash
\’’ hoặc ’’ ‘
%% %
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
Nếu input của fprintf là một véc tơ hay ma trận, thì lệnh sẽ tự lặp lại cho đến khi
hiển thị hết các phần tử của véc tơ hay ma trận đó. Nếu là ma trận thì dữ liệu sẽ
được lần lượt lấy ra theo từng cột để hiển thị
canbachai_1.m
x = 1:5; y = sqrt(x); >> canbachai_1
T = [x; y] T=
fprintf('Can bac hai cua %d la %f \n',T) 1.0000 2.0000 3.0000 4.0000 5.0000
1.0000 1.4142 1.7321 2.0000 2.2361
>> canbachai_2
T=
1.0000 2.0000 3.0000 4.0000 5.0000
1.0000 1.4142 1.7321 2.0000 2.2361
c) Dùng fprintf để ghi dữ liệu vào các file lưu trữ (định dạng .txt)
lưu ý fid được chèn thêm vào cấu trúc lệnh fprintf
fclose (fid)
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
can_bachai_bacba.m
% Chương trình ghi dữ liệu vào file .txt
% Dữ liệu được ghi là bảng giá trị căn bậc hai, bậc ba của các số nguyên dương
Lệnh save dùng để ghi các biến trong workspace vào file lưu trữ
save file1 a b ghi các biến a,b vào file có tên là file1.mat
save file2 ghi toàn bộ các biến trong workspace vào file2.mat
save -ascii file3 ghi toàn bộ các biến trong workspace vào file3.txt
file .mat chỉ đọc được bởi MATLAB, các file được lưu dưới định dạng -ascii có thể đọc được
bằng các phần mềm sử lý văn bản khác.
>> a = 2; b = rand(2,2);
>> save -ascii dulieutxt
CÁC LỆNH save VÀ load
Lệnh load dùng để load lại các biến trong các file lưu trữ vào workspace, hoặc để
import dữ liệu từ các file .txt vào MATLAB
Lệnh xlsread để đọc dữ liệu từ file excel nằm trong Current Directory
%% FORMAT FORMAT
fprintf('FORMAT \n')
a = 2, b = 3.5 a= 2
fprintf(' %%f: a=%f \n',a)
fprintf(' %%.0f: a=%.0f \n',a)
fprintf(' %%.0f: b=%.0f \n',b) b = 3.5000
fprintf(' %%.1f: a=%.1f \n',a)
fprintf('-----\n') %f: a=2.000000
fprintf(' %%d: a=%d \n',a) %.0f: a=2
fprintf(' %%d: b=%d \n',b) %.0f: b=4
fprintf('===================\n\n') %.1f: a=2.0
-----
%d: a=2
%d: b=3.500000e+00
===================
VÍ DỤ 1
%% FLAG FLAG
fprintf('FLAG \n')
a = 2 a= 2
fprintf(' %%5.2f: a=%5.2fend \n',a)
fprintf(' %%4.2f: a=%4.2fend \n',a) %5.2f: a= 2.00end
fprintf(' %% 4.2f: a=% 4.2fend \n',a) %4.2f: a=2.00end
fprintf(' %% 5.2f: a=% 5.2fend \n',a) % 4.2f: a= 2.00end
fprintf('-----\n') % 5.2f: a= 2.00end
fprintf(' %%-5.2f: a=%-5.2fend \n',a) -----
fprintf(' %%-6.2f: a=%-6.2fend \n',a) %-5.2f: a=2.00 end
fprintf(' %%05.2f: a=%05.2fend \n',a) %-6.2f: a=2.00 end
fprintf(' %%06.2f: a=%06.2fend \n',a) %05.2f: a=02.00end
fprintf('===================\n\n') %06.2f: a=002.00end
===================
VÍ DỤ 1
1352461
3
5
2
4
6
-----
VÍ DỤ 1
c = [1 2;3 4;5 6] c=
fprintf('%d %d\n',c) 1 2
fprintf('-----\n') 3 4
5 6
13
52
46
-----
c = [1 2;3 4;5 6] c=
fprintf('%d %d\n',c') 1 2
fprintf('-----\n') 3 4
5 6
12
34
56
-----
VÍ DỤ 1
c= 1
1 2 3
3 4 5
5 6 2
4
d= 7 8 9 6
7
135246789----- 8
9
-----
VÍ DỤ 1
c = [1 2;3 4;5 6]
d = [7 8 9] c = [1 2;3 4;5 6];
fprintf('%d %d\n',c,d) fprintf('%d %d %d %d \n',c)
fprintf('-----\n') fprintf('-----\n')
c= 1352
1 2 4 6 -----
3 4
5 6
c = [1 2;3 4;5 6];
d= 7 8 9
fprintf('%d %d %d %d \n',7,8,9,c)
13
52
7891
46
3524
78
6 >>
9 -----
VÍ DỤ 2
Đại lượng Twc là nhiệt đột không khí đo được trên bề mặt da dưới sức gió, được
tính theo công thức
trong đó T(F) là nhiệt độ, v(mi/h) là vận tốc gió. Viết một m-file tính toán Twc.
Trong đó input, chương trình đòi hỏi người dùng nhập vào các giá trị T và v.
Output hiển thị thông báo ‘Kết quả nhiệt độ Twc tính đươc là: XX’ trong đó XX là
giá trị của Twc. Chạy chương trình với T = 300F, v = 42 mi/h.
T = input('Nhap T di em ');
v = input('Nhap v di em ');
Twc = 35.74 + 0.6215*T - 35.75*v^0.16 + 0.4275*T*v^0.16;
fprintf('Ket qua nhiet do Twc tinh duoc la: %f \n',Twc)
Nhap T di em 30
Nhap v di em 42
Ket qua nhiet do Twc tinh duoc la: 12.695256
>>
VÍ DỤ 3