Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

LÀM VIỆC VỚI M-FILE

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

>> a = 2 >> who


a= 2 Your variables are:
a b c d
>> b = 1:3
b= 1 2 3 >> whos
Name Size Bytes Class Attributes
>> c = 'xin chao'
c= a 1x1 8 double
xin chao b 1x3 24 double
c 1x8 16 char
>> d = b .^2 d 1x3 24 double
d= 1 4 9
WORKSPACE VÀ CÁC LỆNH who, whos, clear, clear all
WORKSPACE VÀ CÁC LỆNH who, whos, clear, clear all

>> clear a

>> clear all


CÁCH THỨC TẠO GIÁ TRỊ INPUT CHO MỘT M-FILE
1. Các biến được tạo và gán giá trị bên trong m-file

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

a = input('Moi ban nhap gia tri cho a ');


b = input('Moi ban nhap gia tri cho b ');
c = input('Moi ban nhap gia tri cho c ');
trung_binh = (a + b + c)/3

>> 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

Cấu trúc của lệnh input

Biến = input(‘Dòng mô tả’) Tạo biến có giá trị số


Biến = input(‘Dòng mô tả’ , ’s’) Tạo biến có giá trị là chuỗi ký tự (string)

Ví dụ:

hoten = input(‘Hay nhap ten cua ban’ , ‘s’)


tuoi = input(‘Hay nhap tuoi cua ban’)
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
1. Lệnh disp dùng để hiện thị ra ngoài màn hình giá trị của một biến hoặc một
chuỗi ký tự.

Cấu trúc: disp(tên biến)


disp(‘ chuỗi ký tự ’)

>> a = 100;
>> disp(a)
100

>> b = rand(2,2);
>> disp(b)
0.3532 0.0154
0.8212 0.0430

>> disp('xin chao')


xin chao
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU

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

a = input('Moi ban nhap gia tri cho a ');


b = input('Moi ban nhap gia tri cho b ');
c = input('Moi ban nhap gia tri cho c ');
trung_binh = (a + b + c)/3;

disp('Gia tri trung binh cua 3 so la: ')


disp(trung_binh)

>> 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

Gia tri trung binh cua 3 so la:


7
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
Mỗi một lệnh disp chỉ có thể hiển thị giá trị của một biến. Vì thế nếu muốn hiển
thị nhiều biến bằng lệnh disp, cần gộp các biến đó thành một biến mới
bangdanso.m
nam = [1984,1986,1988,1990]';
danso = [127,130,136,145]';
table = [nam,danso];
disp(' NAM DAN SO')
disp(' (trieu nguoi)')
disp(' ')
disp(table)

>> 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

>> fprintf('Chao buoi sang.')


a=2
fprintf('Chuc ban mot ngay vui ve \n')
Chao buoi sang.
a=

Chuc ban mot ngay vui ve


>>

>> fprintf('Chao buoi sang.')


a=2;
fprintf('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

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

a = input('Moi ban nhap gia tri cho a ');


b = input('Moi ban nhap gia tri cho b ');
c = input('Moi ban nhap gia tri cho c ');
trung_binh = (a + b + c)/3;

fprintf('Gia tri %f la trung binh cua 3 so da cho \n ', trung_binh)


trungbinhabc_5.m
>> trungbinhabc_5
Moi ban nhap gia tri cho a 2
Moi ban nhap gia tri cho b 6
Moi ban nhap gia tri cho c 8
Gia tri 5.333333 la trung binh cua 3 so da cho
>>
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU

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

ký hiệu flag độ dài tối thiểu format


đánh dấu (không và độ chính xác (bắt
nơi chèn bắt sau dấu phẩy buộc)
dữ liệu số buộc) (không bắt
(bắt buộc) buộc)

Một số format (c,d,e,E,f,g,G,i,o,s,u,x,X)

e sử dụng ký hiệu e mũ (ví dụ 1.70908e+001)


E sử dụng ký hiệu E mũ (ví dụ 1.70908E+001)
f fixed-point (ví dụ 17.0908)
g thu gọn của e hoặc f
G thu gọn của E hoặc f
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU

%-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

Can bac hai cua 1 la 1.000000


Can bac hai cua 2 la 1.414214
Can bac hai cua 3 la 1.732051
Can bac hai cua 4 la 2.000000
Can bac hai cua 5 la 2.236068
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
canbachai_2.m
x = 1:5; y = sqrt(x);
T = [x; y]
fprintf('BANG GIA TRI CAN BAC HAI \n\n')
fprintf('So nguyen duong \t Can bac hai \n')
fprintf('\t %d \t\t %f \n',T)

>> canbachai_2
T=
1.0000 2.0000 3.0000 4.0000 5.0000
1.0000 1.4142 1.7321 2.0000 2.2361

BANG GIA TRI CAN BAC HAI

So nguyen duong Can bac hai


1 1.000000
2 1.414214
3 1.732051
4 2.000000
5 2.236068
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU

c) Dùng fprintf để ghi dữ liệu vào các file lưu trữ (định dạng .txt)

i) Mở một file mới bằng lệnh fopen


ii) Ghi dữ liệu vào file đó bằng lệnh fprintf
iii) Đóng file đã ghi bằng lệnh fclose

fid = fopen (‘ file_name ’ , ‘ lệnh thực thi ’ )


Lệnh thực thi r mở file mới để đọc (mặc định)
w mở file mới để ghi. Nếu file đã tồn tại thì dữ liệu sẽ bị ghi đè
a mở file mới để ghi. Nếu file đã tồn tại thì ghi thêm vào cuối
r+ như r, ngoài ra có thể ghi
w+ như w, ngoài ra có thể đọc
a+ như a, ngoài ra có thể đọc

fprintf (fid, ‘ text %5.2f text ’ , tên biến cần ghi )

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

x = 1:5; y = sqrt(x); z = x.^(1/3);


T1 = [x; y]; T2 = [x; z];

file1 = fopen('BANG CAN BAC HAI.txt','w')


fprintf(file1, 'BANG GIA TRI CAN BAC HAI \n\n')
fprintf(file1, 'So nguyen duong \t Can bac hai \n')
fprintf(file1, '\t %d \t\t %f \n',T1)
fclose(file1)

file2 = fopen('BANG CAN BAC BA.txt','w')


fprintf(file2, 'BANG GIA TRI CAN BAC BA \n\n')
fprintf(file2, 'So nguyen duong \t Can bac ba \n')
fprintf(file2, '\t %d \t\t %f \n',T2)
fclose(file2)
CÁC LỆNH OUPUT ĐỂ XUẤT DỮ LIỆU
CÁC LỆNH save VÀ load

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

>> c = load('dulieu_c.txt') >> load('dulieu_c.txt')


>> dulieu_c
c=
dulieu_c =
3.0000 5.0000 7.0000
1.2000 2.7770 4.0000 3.0000 5.0000 7.0000
3.0000 30.0000 2.0000 1.2000 2.7770 4.0000
3.0000 30.0000 2.0000
CÁC LỆNH save VÀ load
CÁC LỆNH save VÀ load
CÁC LỆNH IMPORT DỮ LIỆU VÀO MATLAB
1. Sử dụng các lệnh import (thường dùng khi đã biết định dạng dữ liệu cần import)

Lệnh xlsread để đọc dữ liệu từ file excel nằm trong Current Directory

a = xlsread (‘ tên file excel ‘)


b = xlsread (‘ tên file excel ‘ , ‘ tên sheet cần đọc ‘)
c = xlsread (‘ tên file excel ‘ , ‘ tên sheet cần đọc ‘ , ‘ khoảng cần đọc ’)

Lệnh xlswrite để ghi dữ liệu từ MATLAB ra file excel

xlswrite (‘ tên file excel ‘ , tên biến)


xlswrite (‘ tên file excel ‘ , ‘ tên sheet cần ghi ‘ , tên biến)
xlswrite (‘ tên file excel ‘ , ‘ tên sheet cần ghi ‘ , ‘ khoảng cần ghi ‘ , tên biến)
CÁC LỆNH IMPORT DỮ LIỆU VÀO MATLAB
CÁC LỆNH IMPORT DỮ LIỆU VÀO MATLAB
2. Sử dụng Import Wizard (thường dùng khi chưa biết định dạng dữ liệu cần import)
file menu > import data hoặc uiimport
VÍ DỤ 1

%% 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

%% MATRIX and % MATRIX and %


fprintf('MATRIX and %% \n')
c = [1 2;3 4;5 6] c=
fprintf('%d',c) 1 2
fprintf('%d \n',c) 3 4
fprintf('-----\n') 5 6

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 2;3 4;5 6] c = [1 2;3 4;5 6];


d = [7 8 9] d = [7 8 9];
fprintf('%d',c,d) fprintf('%d \n',c,d)
fprintf('-----\n') fprintf('-----\n')

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

Một phao bơi được thiết V = 8000;


kế để có thể tích 8000 in3. K = 0.2:0.1:0.7;
b = (4*V ./ (pi^2*(1 + K).*(1 - K).^2)) .^ (1/3);
Thể tích và diện tích bề
a = K.*b;
mặt của phao được tính S = pi^2*(b.^2 - a.^2);
theo công thức kq = [K;a;b;S];
fprintf('K \t\t a \t\t\t b \t\t\t S \n')
fprintf('%05.1f \t\t %-7.3f \t\t % 9.3f \t\t %+7.3f \n', kq)

Nếu a = Kb, tính S,a,b cho K a b S


các trường hợp K = 0.2, 000.2 3.232 16.162 +2474.934
0.3, 0.4, 0.6 và 0.7. Hiển thị 000.3 5.160 17.202 +2657.551
kết quả dưới dạng bảng. 000.4 7.439 18.598 +2867.646
000.5 10.262 20.525 +3118.222
000.6 13.986 23.310 +3432.047
000.7 19.371 27.673 +3854.569
>>

You might also like