2. Ngôn ngữ lập trình cao cấp
Cấu trúc đơn giản (thừa hưởng từ C)
Cấu trúc dữ liệu: ma trận 2 hoặc 3 chiều
Các hàm đều hoạt động trên ma trận (hầu như
không phải dùng vòng lặp)
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 2
3. Có đầy đủ các toolbox cho phép sử dụng các
thuật toán chuẩn trong nhiều lĩnh vực (toán thống
kê, xử lý ảnh, xử lý tín hiệu, mạng nơ ron, hệ
thống thông tin ...)
IO đơn giản cho nhiều loại dữ liệu và loại file
Rất đơn giản để viết các bản thử nghiệm
Sử dụng rộng rãi như là một công cụ hiển thị và
giảng dạy
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 3
4. Tạo một ma trận “magic” vuông với tổng chiều dọc, ngang,
chéo là bằng nhau và gán kết quả ma trận 3x3 vào biến a
>> a = magic(3)
a =
Phép gán hoặc các quy trình con thường kết thúc với dâu
chấm phẩy, nếu không có thì MATLAB sẽ in từng kết quả.
Kết quả không được gán sẽ được gán tự động cho biến
ans
Dùng “help magic” để đọc manual cho hàm này
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 4
294
753
618
5. Khởi tạo chuỗi Khởi tạo chuỗi với khoảng cách
>> 11:14
ans =
11 12 13 14
>> -1:1
ans =
-1 0 1
>> 3:0
ans =
Empty matrix:1-by-0
>> 1:3:12
ans =
1 4 7 10
>> 4:-1:1
ans =
4 3 2 1
>> 3:-0.5:2
ans =
3.0000 2.5000 2.0000
08/06/2015
Phạm Việt Hưng - Nhập môn xử lý ảnh 5
6. Một ô trong ma trận là
◦ a(2,3) == 7
Nếu sử dụng vector thì sẽ chọn tất cả những hàng và
cột tương ứng.
Có thể sử dụng biến end để chỉ ra hàng và cột cuối
trong ma trận
◦ a(end,end-1) == 9
Sử dụng mỗi “:” sẽ nghĩa là “1:end” dùng để
chọn cả hàng hoặc cột
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 6
7. Chọn hàng và cột Có thể dùng như là vector
>> a(1,:)
ans =
8 1 6
>> a(:,1)
ans =
8
3
4
>> a(2:3,1:2)
ans =
3 5
4 9
>> a(1:5)
ans =
8 3 4 1 5
>> a(6:end)
ans =
9 6 7 2
>> b = a(1:4:9)
b =
8 5 2
>> size(b)
ans =
1 3
08/06/2015
Phạm Việt Hưng - Nhập môn xử lý ảnh 7
8. >> c[2 7;3 1]
c =
2 7
3 1
>> a[a(:,end) a(1,:)’]
ans =
6 8
7 1
2 6
>> e = [zeros(1,3);a(2,:)]
e =
0 0 0
3 5 7
>> find(a>5)
ans =
1
6
7
8
>> a(find(a>5))=0
a =
0 1 0
3 5 0
4 0 2
08/06/2015
Phạm Việt Hưng - Nhập môn xử lý ảnh 8
Ma trận mặt nạ
Sử dụng [ ] để tạo nên ma trận mới với “,” hoặc “ “ là phân
cách ngang và “;” là phân cách dọc
9. Các phép tính Nhân trong và ngoài
>> [1,1;1,0] * [2 3]’
ans =
5
2
>> [1 2 3] .* [10 10 15]
ans =
10 20 45
>> [1 2 3] + 2
ans =
3 4 5
>> [1 2 3] + 2
ans =
3 4 5
>> [2 3 5] * [1 7 11]’
ans =
78
>> [2 3 5]’ * [1 7 11]
ans =
2 14 22
3 21 33
5 35 55
08/06/2015
Phạm Việt Hưng - Nhập môn xử lý ảnh 9
10. Tạo ra ma trận với lệnh ngắn nhất
B =
Tính
◦ Tổng của cột 5 và 7
◦ Vector dòng cuối của B
◦ Một phiên bản của B với row 2 và 3 đổi chỗ
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 10
25612864321684
3113579
7654321
11. Đưa ra một phép nhân vector để tạo ra
a =
b =
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 11
54321
54321
54321
444
333
222
111
000
12. x = -pi:.1:pi;
y = sin(x);
plot(x,y)
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 12
13. plot(sin(x));
% hold axes and all lineseries properties, such as
% ColorOrder and LineStyleOrder, for the next plot
hold all
plot(sin(x+(pi/4)));
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 13
15. Để định nghĩa một hàm mới ví dụ hàm tính trung
bình của ma trận viết vào file average.m những
dòng sau:
function y = average(x)
if ~isvector(x)
error('Input must be a vector')
end
y = sum(x)/length(x);
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 15
16. Hàm stat trong stat.m trả về giá trị trung bình và
độ lệch chuẩn
function [m,s] = stat(x)
n = length(x);
m = sum(x)/n;
s = sqrt(sum((x-m).^2/n));
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 16
17. Chỉ có hàm có cùng tên với file mới có thể được
gọi từ bên ngoài, các hàm khác là hàm nội bộ.
M-file có thể chỉ có danh sách các hàm được gọi
theo thứ tự thay vì định nghĩa một hàm, file này
chỉ cần gọi theo tên.
08/06/2015 Phạm Việt Hưng - Nhập môn xử lý ảnh 17