You are on page 1of 18

THỐNG KÊ VÀ LẬP TRÌNH MATLAB

Giảng viên: TS. Nguyễn Nhựt Tiến


Khoa Kỹ Thuật Điện
Trường Bách Khoa
Email: nntien@ctu.edu.vn
1. Thống kê
2. Tạo hàm trong Matlab
3. Nhập và hiển thị text
4. Lệnh if
5. Lập trình với vòng lặp For
6. Vòng lặp While
7. Mệnh đề Switch
8. Vectorization

2020/9/22 2
1. Thống kê

Giá trị trung bình của một tập dữ liệu xj được cho bởi: Điểm (x) Số sinh viên

 N (xj )
N

x j
55 1

xj =
j =1 63 2

 N (x )
N
69 1
j
j =1 70 6
trong đó 75 4
N(xj): số phần tử có giá trị xj 78 7

N ( xj )
82 2
Xác xuất để đạt kết quả xj
P( xj ) = 84 1
N 85 3

 N (xj )
N

x
88 2
j

=  xj  p(xj )
N 90 4
j =1
xj =
 N (x )
N 96 2
j =1
j 100 1
j =1

2020/9/22 3
1. Thống kê

Trung vị: Lệnh median được dùng để tính trung vị của dãy số liệu.
Độ lệch tiêu chuẩn là căn bậc hai của phương sai và được tính bằng lệnh std

Phép toán Cú pháp Phép toán Cú pháp


Sắp xếp sort(X) Hiệp phương sai cov(X,Y)
Giá trị trung bình mean(X) Hệ số tương quan corrcoef(X,Y)
Phương sai var(X) Biểu đồ tần suất hist(X)

2020/9/22 4
1. Thống kê

Ví dụ 1: Điểm (x) Số sinh viên


x = [55, 63, 69, 70, 75, 78, 82, 84, 85, 88, 90, 96, 100]; 55 1
63 2
y = [1, 2, 1, 6, 4, 7, 2, 1, 3, 2, 4, 2, 1];
69 1
N = sum(y); 70 6
s = sum(x.*y); 75 4
ave = s/N 78 7
82 2
ave =
84 1
79.0833
85 3
88 2
p = y(6)/N 90 4

p= 96 2
100 1
0.1944

2020/9/22 5
1. Thống kê

p = y/N; Điểm (x) Số sinh viên


55 1
ave = sum(x.*p) 63 2

ave = 69 1
70 6
79.0833
75 4
78 7
md = median(x) 82 2
md = 84 1
82 85 3
88 2
sigma = std(x) 90 4
96 2
sigma =
100 1
12.9970

2020/9/22 6
2. Tạo hàm trong Matlab

Cú pháp hàm trong Matlab được trình bày như sau:


function [tên tham số ra] = tên hàm (tên các biến vào)
Phần thân của chương trình trong hàm là các lệnh của Matlab thực hiện việc tính
toán giá trị của đại lượng được nêu trong phần kết quả theo các biến được nêu trong
danh sách các biến vào. Dấu % được đặt đầu dòng cần chú thích.

2020/9/22 7
3. Nhập và hiển thị text

Ví dụ: Viết chương trình để hiển thị giá của căn nhà dựa vào diện tích của nó

format bank
rate=10;
sqft=input('Enter total sqft of house ')
price=rate*sqft;
disp('The total price is $'), disp(price)

Source: https://www.businessfirstmagazine.com.au/sydney-house-prices-crazy-glenn-stevens/8187/

2020/9/22 8
3. Nhập và hiển thị text

Ví dụ: Viết chương trình để tính thể tích của hình cầu khi biết bán kính của nó

r=input('Enter Radius ')


V=4/3*pi*r^3;
disp('Volume is:')
disp(V)

Source: https://www.slideshare.net/msaeed110/sa-volume-spheres

2020/9/22 9
4. Lệnh if

Lệnh if đơn Ví dụ:


Cú pháp: function ave = myaverage(x,N)
if <biểu thức logic> sizex = size(x);
nhóm lệnh; sizeN = size(N);
end if sizex(2) ~= sizeN(2)
Lệnh if kép disp('Error: Arrays must be the same dimension')
Cú pháp: else Tuổi Số nhân viên
if <biểu thức logic 1> total = sum(N); 20 2
nhóm lệnh 1; s = x.*N; 25 3
38 4
else ave = sum(s)/total;
43 2
nhóm lệnh 2; end 55 3
end

2020/9/22 10
4. Lệnh if

Nhập các dữ liệu cho trong bảng rồi gọi lại file hàm để tính độ tuổi trung bình
age = [20, 25, 38, 43, 55];
num = [2, 3, 4, 2, 3];
myaverage(age,num)
ans =
37

2020/9/22 11
5. Lập trình với vòng lặp For

Cú pháp vòng lặp For:


for index = start : increment : finish
statements
end
Ví dụ: function sumx = mysum(x)
%So phan tu
num=length(x);
%Tong luc dau
sumx=0;
for i = 1:num
sumx=sumx+x(i)
end

2020/9/22 12
6. Vòng lặp While

Cú pháp của vòng lặp while


while condition
statement
end
Ví dụ:
n=input('Enter number of term in sum: ')
i=1;
sum=0;
while i<=n
sum=sum+1/i;
i=i+1;
end
disp('Total: ')
disp(sum)

2020/9/22 13
7. Mệnh đề Switch

Cú pháp của mệnh đề switch Ví dụ:


switch operation n = input('Enter a number: ');
case 1
switch n
do these statement
case -1
case 2 disp('negative one')
do these statement case 0
case n disp('zero')
do these statement case 1
end disp('positive one')
otherwise
disp('other value')
end

2020/9/22 14
8. Vectorization

Vectorization được dùng để thay thế các vòng lặp sử dụng cho véc tơ và ma trận.
Vectorization làm cho đoạn code trở nên đơn giản hơn, ít phát sinh lỗi hơn và thời gian chạy
nhanh hơn so với các đoạn code có vòng lặp.
Ví dụ: Tính sin của 1001 giá trị trong khoảng 0 đến 10.
i = 0;
for x = 0:0.01:10
i = i +1;
y(i) = sin(x);
end

% Vectorization
t = 0:0.01:10;
z = sin(t);

2020/9/22 15
8. Vectorization

Lệnh Hàm Lệnh Hàm


all Kiểm tra tất cả các phần tử khác 0 prod Tích từng phần tử
any Kiểm tra bất kỳ phần tử khác 0 repmat Lặp lại sao chép ma trận
cumsum Phép cộng dồn reshape Chỉnh kích thước ma trận
Hiệu giữa các phần tử hoặc xấp xỉ
diff shiftdim Dịch chuyển kích thước của mảng
đạo hàm
Tìm chỉ số và giá trị của các phần
find sort Sắp xếp thứ tự các phần tử
tử khác 0
logical Chuyển giá trị số thành logic squeeze Bỏ kích thước có độ dài bằng 1
ndgrid Lưới hình chữ nhật n chiều sum Tổng của các phần tử

2020/9/22 16
8. Vectorization

Ví dụ: Tính tổng dồn của các phần tử trong véc tơ tại các phần tử vị trí số 5.
x = 1:100;
ylength = (length(x) - mod(length(x),5))/5;
y(1:ylength) = 0;
for n= 5:5:length(x)
y(n/5) = sum(x(1:n));
end

% Vectorization
x = 1:100;
xsum = cumsum(x);
y = xsum(5:5:length(x));

2020/9/22 17
Thank you for your attention!

You might also like