Theo bài giảng của Danilo Šćepanović - MIT Opencoursewares
Nội dung
1. Xác suất thống kê
2. Cấu trúc dữ liệu
3. Hình ảnh và phim mô tả
4. Gỡ lỗi - Debugging
1. Xác suất thống kêMỗi khi làm việc với một bảng số liệu, bạn cần đến các công cụ thống kê. MATLAB cung cấp các sẵn các hàm thông dụng như: mean, median, mode, var, cov,...
Ví dụ:
2. Cấu trúc dữ liệu
3. Hình ảnh và phim mô tả
4. Gỡ lỗi - Debugging
1. Xác suất thống kêMỗi khi làm việc với một bảng số liệu, bạn cần đến các công cụ thống kê. MATLAB cung cấp các sẵn các hàm thông dụng như: mean, median, mode, var, cov,...
Ví dụ:
>> scores = 100*rand(1,100); % Lấy 100 giá trị ngẫu nhiên nằm trong khoảng 0 - 100.
>> mean(scores) % Tính giá trị trung bình của 100 giá trị đó
>> median(scores) % Tìm trung vị
>> mode(scores) % Tìm mốt
Để biểu diễn dữ liệu dưới dạng một biểu đồ, dùng lệnh hist
>> mean(scores) % Tính giá trị trung bình của 100 giá trị đó
>> median(scores) % Tìm trung vị
>> mode(scores) % Tìm mốt
Để biểu diễn dữ liệu dưới dạng một biểu đồ, dùng lệnh hist
>> hist(scores,5:10:95); % Tạo một biểu đồ cột biểu diễn số điểm nằm trong các đoạn chia bởi các điểm
%5, 10, 15, ... 95
>> N=histc(scores,0:10:100); % Trả về một vector hàng với mỗi phần tử là số phần tử nằm trong các
%khoảng [0,10), [10, 20), ...
>> bar(0:10:100,N,'r') % Sau đó vẽ đồ thị cột với lệnh bar
Tạo số ngẫu nhiên
Rất nhiều bài toán về thống kê cần đến việc tạo số ngẫu nhiên
MATLAB cung cấp các hàm tạo số ngẫu nhiên như sau:
rand: lấy số từ phân phối đều trên khoảng 0 đến 1
randn: lấy số từ phân phối chuẩn (Gauss)
random: dùng lệnh này có thể chọn thêm các phân phối khác cho việc tạo số ngẫu nhiên như phân phối Poisson, nhị thức, Wei Bull, ...
Để chọn vị trí của trung bình cộng và phương sai của dãy số ngẫu nhiên được tạo, sử dụng các cách đơn giản như trong ví dụ sau:
%5, 10, 15, ... 95
>> N=histc(scores,0:10:100); % Trả về một vector hàng với mỗi phần tử là số phần tử nằm trong các
%khoảng [0,10), [10, 20), ...
>> bar(0:10:100,N,'r') % Sau đó vẽ đồ thị cột với lệnh bar
Tạo số ngẫu nhiên
Rất nhiều bài toán về thống kê cần đến việc tạo số ngẫu nhiên
MATLAB cung cấp các hàm tạo số ngẫu nhiên như sau:
rand: lấy số từ phân phối đều trên khoảng 0 đến 1
randn: lấy số từ phân phối chuẩn (Gauss)
random: dùng lệnh này có thể chọn thêm các phân phối khác cho việc tạo số ngẫu nhiên như phân phối Poisson, nhị thức, Wei Bull, ...
Để chọn vị trí của trung bình cộng và phương sai của dãy số ngẫu nhiên được tạo, sử dụng các cách đơn giản như trong ví dụ sau:
>> y=rand(1,100)*10+5; % Tạo 100 số ngẫu nhiên trong khoảng từ 5 đến 15.
>> y=floor(rand(1,100)*10+6); % Tạo 100 số nguyên ngẫu nhiên trong khoảng từ 0 đến 16
Ví dụ: Chúng ta sẽ mô phỏng chuyển động Brown của một hạt trên không gian 1 chiều. Các công đoạn như sau:
1. Tạo một vector 10000 phần tử bằng lệnh zeros để lưu vị trí của hạt sau 10000 lần mô phỏng.
2. Viết một đoạn mã gồm 1 vòng lặp để tính vị trí của hạt tại mỗi thời điểm.
Bắt đầu tại 0. Để nhận được vị trí mới, lấy 1 số ngẫu nhiên.
Nếu số này < 0.5 thì hạt sang trái (vị trí mới = vị trí cũ - 1), nếu > 0.5 thì hạt sang phải (vị trí mới = vị trí cũ +1).
Từ đó tính được vị trí mới của hạt.
Vẽ 1 biểu đồ gồm 50 cột để biểu diễn tần suất có mặt ở các vị trí mà hạt xuất hiện.
Hướng dẫn: Ta lập một file brown.m, nội dung:
x=zeros(10000,1);
for n=2:10000
if rand<0 .5="" br=""> x(n)=x(n-1)-1;
else
x(n)=x(n-1)+1;
end
end
figure
hist(x,50)0>
2. Cấu trúc dữ liệu
>> a{2,1}='hello world 2';
>> y=floor(rand(1,100)*10+6); % Tạo 100 số nguyên ngẫu nhiên trong khoảng từ 0 đến 16
Ví dụ: Chúng ta sẽ mô phỏng chuyển động Brown của một hạt trên không gian 1 chiều. Các công đoạn như sau:
1. Tạo một vector 10000 phần tử bằng lệnh zeros để lưu vị trí của hạt sau 10000 lần mô phỏng.
2. Viết một đoạn mã gồm 1 vòng lặp để tính vị trí của hạt tại mỗi thời điểm.
Bắt đầu tại 0. Để nhận được vị trí mới, lấy 1 số ngẫu nhiên.
Nếu số này < 0.5 thì hạt sang trái (vị trí mới = vị trí cũ - 1), nếu > 0.5 thì hạt sang phải (vị trí mới = vị trí cũ +1).
Từ đó tính được vị trí mới của hạt.
Vẽ 1 biểu đồ gồm 50 cột để biểu diễn tần suất có mặt ở các vị trí mà hạt xuất hiện.
Hướng dẫn: Ta lập một file brown.m, nội dung:
x=zeros(10000,1);
for n=2:10000
if rand<0 .5="" br=""> x(n)=x(n-1)-1;
else
x(n)=x(n-1)+1;
end
end
figure
hist(x,50)0>
2. Cấu trúc dữ liệu
- Ở các bài trước, chúng ta đã làm việc với các mảng 1 chiều (vector) và 2 chiều (matrix). Trong MATLAB các kiểu dữ liệu mảng này có các tính chất:
- Số chiều của mảng (bạn có thể lập những mảng n chiều)
- Mỗi phần tử của mảng này có cùng kiểu (nguyên, thực, kí tự, ...)
- Mảng là một cấu trúc tiết kiệm không gian nhớ và thuận lợi cho tính toán.
- Những ma trận lớn có nhiều phần tử 0 (ma trận thưa) có thể được lập thành bởi lệnh sparse. Ví dụ:
- >> a = zeros(100); a(1,3) = 10; a(21,5) = pi; b = sparse(a);
- Ở một số trường hợp, ta cần có các cấu trúc dữ liệu phức tạp hơn
- cell array: giống với kiểu mảng thường, nhưng các phần tử trong mảng không cần phải có chung kiểu
- structs: cấu trúc dữ liệu trừu tượng gồm nhiều kiểu dữ liệu hợp lại. Thường dùng trong lập trình hướng đối tượng.
- Cell
- Cell giống như một ma trận, nhưng mỗi phần tử của ma trận này có thể chứa một loại dữ liệu riêng (có thể là một ma trận khác)
- Ví dụ: Một cell có thể chứa tên người, tuổi, tuổi của những đứa con của họ. Trong khi đó nếu sử dụng matrix, ta cần 3 biến ma trận, mỗi ma trận có 3 phần tử để lưu những dữ liệu trên.
- Cách khai báo và sử dụng một cell:
- Để tạo một cell, dùng từ khóa cell và chỉ rõ kích thước của cell.
- Hoặc có thể khai báo bằng cách liệt kê các phần tử của cell trong dấu ngoặc { }
- Mỗi phần tử của cell có thể là mọi loại dữ liệu
- Để truy cập đến từng phần tử của cell, dùng dấu { }
>> a{2,1}='hello world 2';
>> a{1,2}=c{3};
- Struct:
- struct cho phép bạn và lưu một tập các biến liên quan (trong các field) và giữ chúng trong cùng 1 biến (struct là kiểu dữ liệu giống trong C)
- Để khởi tạo một struct:
% tuy nhiên với các struct lớn bạn nên khởi tạo trước khi sử dụng.
- Để thêm một field trong struct:
>> s.scores = [95 98 67];
>> s.year = 'G3';
- field có thể là matrix, cell, hoặc là một struct khác
- Để xem thêm về struct, gõ doc struct
- Ví dụ khởi tạo và sử dụng struct:
% ppl là một mảng gồm 3 struct, mỗi struct có 3 field dữ liệu là name, age và childAge
% chú ý rằng các cell ở khởi tạo trên phải có cùng kích thước
>> person = ppl(2) % biến person giờ là 1 struct
>> person.name % trả về Mary
>> ppl(1).age % trả về 32
0 nhận xét:
Post a Comment