Chương 1 trình bày những nội dung chính sau: Giới thiệu matlab, tổng quan về lập trình matlab, cách sử dụng biến trong matlab, các lệnh và các hàm cơ bản, cách thao tác với ma trận, vẽ đồ thị trong matlab, làm việc với hàm và m-file, lập trình GUI.
Trang 1CHƯƠNG I
Xử lý tín hiệu nâng cao
Tổng quan về công cụ
MATLAB
Trang 2Tài liệu tham khảo
1 Xử lý tín hiệu nâng cao - Nguyễn Quốc Trung
2 Digital signal processing using MATLAB -
Viney K.Ingle & John G.Proakis
3 Digital Signal and Image Processing Using
MATLAB - Gerard Blanchet & Maurice Charbit
4 Digital image processing using MATLAB -
Gonzalez Woods & Eddins
5 Xử lý số tín hiệu - Hồ Văn Sung
Trang 4Giới thiệu Matlab
Matlab được phát triển bởi MathWorks
Trang 5Lịch sử phát triển
Cuối thập niên 1970 MATLAB, nguyên sơ được
viết bởi ngôn ngữ Fortran
Năm 1983, Jack Little, một người đã học ở MIT và
Stanford, đã viết lại MATLAB bằng ngôn ngữ C
Năm 1984: Phiên bản đầu tiên MATLAB 1.0 viết
bằng C cho MS-DOS PC
Năm 1986, MATLAB 2 ra đời trong đó hỗ trợ UNIX.
Năm 1987, MATLAB 3 phát hành.
Trang 6Lịch sử phát triển
Năm 1992 MATLAB 4 thêm vào hỗ trợ 2-D và 3-D
Năm 1996 MATLAB 5 bao gồm thêm các kiểu dữ
liệu, bộ sửa lỗi và bộ tạo dựng GUI
Trang 7Màn hình chính
Trang 8Tổng quan về lập trình trong Matlab
Trang 9Sử dụng biến trong Matlab
Không cần khai báo kiểu, số chiều, độ dài biến.
Mỗi khi một cái tên mới xuất hiện với phép gán,
Matlab tạo biến và tự động cấp phát bộ nhớ cho nó.
Ví dụ: sosv = 110 tạo một biến tên sosv (là một ma
Trang 10Cách đặt tên biến
Tên biến phải là một từ, không chưa dấu
cách, tên biến tối đa là 63 ký tự
Tên biến phân biệt chữ hoa và chữ
thường
Tên biến bắt đầu bằng chữ cái
Ký tự dấu chấm “.” không được sử dụng
để trong đặt tên biến
Trang 11Các biến đặc biệt
Các biến đặc biệt Giá trị
ans biến mặc định trả về kết quả
pi số pi eps Số nhỏ nhất lớn hơn 0
inf Để chỉ số vô cùng
NaN hoặc nan Để chỉ số ko xác định như kết quả của 0/0
i và j Số phức, i=j=sqrt(-1)
realmin Số dấu chấm động nhỏ nhất (2.2251e-308)
realmax Số dấu chấm động lớn nhất (1.7977e+308)
Trang 13Một số lệnh thông dụng
clc: Xóa màn hình cửa sổ lệnh
who: xem tên biến trong không gian làm việc của Matlab
>> who Your variables are:
A M N
whos: xem chi tiết hơn về các biến
>> whos Name Size Bytes Class
A 1x10 80 double array
M 6x3 144 double array
N 3x3 72 double array Grand total is 37 elements using 296 bytes
clear: Xóa các biến trong bộ nhớ của Matlab
help: yêu cầu sự giúp đỡ
Trang 15Các hàm toán học thông dụng
sin(x), cos(x), tan(x) Các hàm l Các hàm l ượ ượ ng giác ng giác
asin(x), acos(x), atan(x) Các hàm l Các hàm l ượ ượ ng giác ng ng giác ng ượ ượ c c
log(x), log10(x), log2() Logarit c s e, 10, 2 Logarit c s e, 10, 2 ơ ố ơ ố
abs(x) Hàm l y tr tuy t đ i Hàm l y tr tuy t đ i ấ ấ ị ị ệ ố ệ ố
Round(x), floor(x), fix(x),
Trang 17Thực hành
1.3 Xác định công dụng của hàm solve, thực
hiện một ví dụ với hàm này
1.4 Tạo một số ngẫu nhiên
Trang 18Các toán tử và các hàm thao tác với ma trận
randn(N): Tạo ma trận ngẫu nhiên có kích thước N, các
phần tử tuân theo phân bố chuẩn
magic(N): Tạo ma trận magic (tổng giá trị trong 1 hàng
bằng tổng giá trị trong 1 cột bằng tổng giá trị đường chéo)
có kích thước N
eye(N): Tạo ma trận đơn vị
Trang 19 Chia: X=A/B (A=X*B) hoặc X=A\B (B=A*X)
Lũy thừa: X=A^2 (X=A*A)
Xóa cột: A(:,3)=[] để xóa cột 3 trong ma trận A
Xóa hàng: A(3,:)=[] để xóa hàng 3 trong ma trận A
Các hàm thông dụng với ma trận
Tính kích thước: d=size(A)
Tính định thức: d=det(A)
Tính ma trận nghịch đảo: X=inv(A)
Trang 20Thực hành
1.6 Tạo một vector:
Có 10 phần tử có giá trị nguyên được lấy ngẫu nhiên trong khoảng [0, 100]
Có 10 phần tử có giá trị nguyên được lấy ngẫu nhiên trong khoảng [-20 ,10]
1.7 Cho x = [3 1 5 7 9 2 6], dự đoán kết quả các dòng lệnh sau và thử
Trang 23Các lệnh khác với đồ thị
grid on/off: thêm/bỏ đường lưới vào đồ
thị
box on/off: thêm/bỏ hộp chứa đồ thị
axis on/off: thêm/bỏ trục tọa độ
xlabel('Trục x'): thêm nhãn cho trục x
ylabel('Truc y'): thêm nhãn cho trục y
title('Do thi ham sin'): thêm tiêu đề ở
đỉnh cho đồ thị
Trang 24Đồ thị trong không gian 3D
dụng lệnh plot3, khuôn dạng lệnh plot3 như sau:
plot3(x,y,z) trong đó x,y,z là các vector hoặc ma trận
>> t=linspace(0,6*pi,100);
>> plot3(sin(t),cos(t),t)
Trang 25Đồ thị trong không gian 3D
Đối với đồ thị bề mặt và lưới, Matlab định
nghĩa bề mặt lưới bằng các điểm theo
hướng trục z ở trên đường kẻ ô hình
vuông trên mặt phẳng x-y
Trong Matlab có hàm meshgrid, với cú
pháp [X,Y]=meshgrid(x,y) tạo ra một ma trận X và Y, trong đó ma trân X mà các hàng nó là bản sao của vector x, và ma trận Y có các cột là bản sao của vector y
Trang 26Đồ thị trong không gian 3D (tiếp)
Trang 27Đồ thị trong không gian 3D (tiếp)
nhật trong mặt phẳng x-y Z là một hàm số theo x,y cuối cùng, sử dụng hàm mesh(x,y,z) để vẽ đồ thị.
Trang 29Viết chương trình trong Matlab
Ví dụ trong bài toán vẽ độ thị trên, ta tạo
một file dothi3D.m với nội dung:
function dothi3D [X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
Khi đó, để thực hiện nhóm câu lệnh trong
file trên, tại dấu nhắc của cửa sổ lệnh, chỉ việc gõ dothi3D
Trang 30Thực hành
1.13 : Nhập vào 3 số, kiểm tra xem 3 số đó có
phải cạnh của một tam giác hay không
1.14 : Nhập 3 số a,b,c từ bàn phím, giải
phương trình, sau đó giải phương trình
ax 2 +bx+c=0
1.15 : Nhập vào 1 số từ bàn phím, kiểm tra
xem số đó có phải số nguyên tố hay không
Trang 31Viết hàm trong matlab
Trang 32Viết hàm trong matlab (tiếp)
Lưu ý khi viết hàm trong Matlab:
Tên hàm và tên file phải là một, ví dụ hàm
example phải được lưu trong file example.m
Một file m có thể chứa nhiều hàm, tên file sẽ
được đặt theo hàm đầu tiên
Các dòng chú thích đầu tiên trong hàm sẽ xuất
hiện khi gõ lệnh help
Lệnh return giúp ta kết thúc một hàm mà không
cần phải thi hành hết các câu lệnh.
Trang 33Viết hàm trong matlab (tiếp)
function [output_list] = function_name(input_list)
//body Return
Trang 34Thực hành
IF ELSE IF …
Một học viên được kiểm tra 3 môn học Mỗi bài kiểm tra tối đa là
100 điểm Xếp loại học viên dựa vào điểm trung bình 3 môn.
Hãy viết một hàm, thực hiện
Trang 35Thực hành
Hãy nhập vào 2 số bất kỳ, sau đó hỏi người sử dụng muốn
thực hiện tính toán gì với 2 số này (+ , - , * , / , %) Sau
đó thực hiện tính toán và hiển thị kết quả ra màn hình
Tìm giai thừa của một số.
Yêu cầu người sử dụng nhập vào các số tự nhiên, quá
trình nhập kết thúc khi người dùng gõ số 0 Thực hiện tính toán để in ra màn hình tổng tất cả các số đã nhập.
Trang 36 Được sử dụng để cung cấp cho người
dùng một môi trường làm việc đơn giản
và thân thiện
Trang 37Matlab GUI
Trang 38Matlab GUI
Trang 39Matlab GUI
Các thuộc tính
Trang 40Hàm Callback
Mọi điều khiển trong Matlab đều có hàm
Callback,
Hàm Callback của mỗi điều khiển được gọi
phụ thuộc vào từng điều khiển khác nhau.
Trong hàm Callback có 2 thuộc tính quan
trọng
hObject : handle của điều khiển của control
handles : là một cấu trúc chứa tất cả các điều khiển và
dữ liệu người dùng Dùng cái này để truy suất các điều khiển khác
Trang 41Đọc & thiết lập giá trị
Trang 42Edit text & Static text
Trang 43Điều khiển Toggle
Trang 44List box & Axes
Trang 46Run & Debug
Bấm nút Play trên thanh công cụ hoặc F5
trong cửa sổ lập trình để chạy chương trình
Trong trường hợp muốn debug chương trình
Trang 47Thực hành
Viết một chương trình thực hiện công
việc giống công cụ calculator của
Windows