Cùng tìm hiểu bắt đầu với MATLAB; biến; véc-tơ và ma trận; các toán tử cơ bản; File mã MATLAB; chương trình con; lệnh lập trình cơ bản;... được trình bày cụ thể trong Bài giảng Xử lý tín hiệu số: Chương 4 do Lã Thế Vinh biên soạn.
Trang 1Bài giảng môn học
Xử Lý Tín Hiệu Số
Giảng viên: Lã Thế Vinh Email: vinhlt@soict.hut.edu.vn
Chú ý: bài giảng có sử dụng các học liệu được cung cấp bởi Giáo sư Tae-Song Kim,
Trường Đại học Kyung Hee, Hàn Quốc.
Trang 3Giới thiệu MATLAB
• MATLAB: MATrix LABoratory
• Phát triển bởi Cleve Moler từ 1970
• Được sử dụng nhiều trong tính toán:
Trang 4Giới thiệu MATLAB
• Ưu điểm của MATLAB (so với các ngôn ngữ khác):
– Dễ lập trình
– Khả năng tạo các đồ thị, biểu đồ dễ dàng
– Giao diện thân thiện
• Trong môn học này MATLAB được dùng để:
– Làm các thí nghiệm đơn giản: tạo, xử lý và hiển thị các tín hiệu
– Phân tích phổ tín hiệu
– Thực hiện các bộ lọc tín hiệu
Trang 5Bắt đầu với MATLAB
• Cài đặt MATLAB
Trang 6Bắt đầu với MATLAB
• Chạy MATLAB
Trang 7Biến trong MATLAB
• MATLAB là ngôn ngữ lập trình có kiểu biến
động
• Biến được khai báo và khởi tạo mà không cần chỉ định kiểu
• Ví dụ: x = 1.0; y = [1 2;3 4];
Trang 8Biến trong MATLAB
• Phép gán: x = y, MATLAB tự khai báo x và gán
cho x kiểu tương ứng
Trang 9Biến trong MATLAB
Trang 10Các lệnh cơ bản của MATLAB
• Panel trái: Thư mục / Không gian biến
– A) Thư mục hiện tại MATLAB đang làm việc
– B) Biến và giá trị của biến đã được tạo ra
• Panel phải: Cửa sổ lệnh
– Nhập lệnh cho MATLAB
– Lệnh không có dấu ; sẽ in kết quả thực thi ra cửa sổ lệnh – Lệnh có dấu ; sẽ không in kết quả thực thi
Trang 11Các lệnh cơ bản của MATLAB
• Cách nhập lệnh:
– Một lệnh một dòng kết thúc bằng ENTER
– Nhiều lệnh một dòng:
• Dùng ; để tách lệnh
• Dùng , để tách lệnh (in kết quả thực thi)
• Nhập tên biến + ENTER = xem giá trị biến
• Nhập một giá trị + ENTER , MATLAB tạo ra biến ans
(answer) với giá trị đã nhập
Trang 12Các lệnh cơ bản của MATLAB
Trang 13• who: Hiện các biến đã được tạo ra
Trang 14Các lệnh cơ bản của MATLAB
Trang 15• Giá trị trong MATLAB có thể là phức
– X=1+2i
– Y=1+2j
Trang 16Các lệnh cơ bản của MATLAB
• Cửa số lịch sử: Các lệnh đã dùng gần đây
• Nháy đúp để chạy lại lệnh
đã dùng
Trang 18Véc-tơ và Ma trận
• Khai báo véc-tơ, ma trận
– C / Java: int a[4] = {1, 2, 3, 4}; – MATLAB:
• a = [1 2 3 4] – Véc-tơ hàng
• a = [1 2 3 4]’ – Véc-tơ cột
• a = [1;2;3;4] – Véc-tơ cột
• MATLAB tự động co giãn các ma trận
Trang 21– Không phân tách bởi ngoặc
– , phân tách các chiều của ma trận
– Chỉ số từ 1
– Chỉ số đầu là hàng, chỉ số sau là cột
Trang 25Véc-tơ và Ma trận
• Sao chép ma trận
– J = a(:,:);
– J = a;
Trang 26Véc-tơ và Ma trận
Trang 27• Tạo các véc-tơ, ma trận với các giá trị tăng/giảm đều
Trang 30Các toán tử cơ bản
Trang 31• Các phép *, /, \, và ^, có thể thực hiện trên từng phần tử
– Thêm vào trước toán tử
• Ví dụ: A * B
– Nhân từng cặp phần tử của A và B
• Ví dụ: [ 1 2; 3 4] * [1 2; 3 4] = ?
Trang 32• sum(M, 2): Cộng các giá trị của M theo hàng
• prod(M): tương tự như sum nhưng tính tích
• sum, prod của một véc-tơ tính tổng/tích của các phần tử
Trang 33File mã MATLAB
• Các chương trình phức tạp chứa nhiều lệnh không thể soạn thảo trực tiếp trong cửa sổ lệnh
• Một tập lệnh phức tạp thường được ghi vào file
mã m của MATLAB (text file)
• Có thể debug (break) khi dùng file m
• MATLAB chỉ chạy file m nếu nó nằm trong thư
mục hiện tại hoặc trong đường dẫn thư mục đã được khai báo
• Khai báo các đường dẫn thư mục
Trang 34File mã MATLAB
Trang 35Chương trình con
• Mỗi chương trình con được đặt trong một file
mã riêng, với tên file và tên chương trình con giống nhau
function [ra] = <Tên chương trình con>(vào)
End
• Khi có một lời gọi chương trình con, MATLAB
sẽ tìm file tương ứng trong thư mục làm việc hoặc trong các thư mục đã được khai báo
Trang 36Chương trình con
• Biến trong chương trình con là cục bộ
• Tham số được dùng để truyền dữ liệu vào chương trình con
• Biến global cũng có thể được dùng:
– global x – quy định x là biến toàn cục được truy xuất ở khắp nơi
– Ví dụ: ?
• Dấu % để chú thích
Trang 38Đồ thị và biểu đồ
• figure – tạo ra một cửa sổ
• subplot(m,n,k) chia cửa sổ vẽ thành lưới mxn chọn ô k để vẽ (trái -> phải, trên -> dưới)
• hold on: vẽ chồng
• hold off: xóa trước khi vẽ
• plot(x,y) vẽ hàm y theo biến x
Trang 40Đồ thị và biểu đồ
• title(‘…’) Thêm tiêu đề
• xlabel(‘…’), ylabel(‘…’) tên các trục
Trang 41Đồ thị và biểu đồ
Trang 42Ví dụ:
• Vẽ một chu kỳ hàm sin tần số 50Hz
• Vẽ 10 chu kỳ hàm sin tần số 100Hz
• Cộng hai hàm và vẽ hàm tổng
• Tạo sóng sin và ghi vào file wave
• Đọc file wave và hiển thị sóng âm
• Nhận xét gì về tần số tín hiệu và tần số lấy mẫu?
wavwrite(x1,1/Ts,'c:\temp\100.wav');
wavwrite(x2,1/Ts,'c:\temp\50.wav');
wavwrite(x3,1/Ts,'c:\temp\mixed.wav');