


















Preview text:
Hướng dẫn thực hành
Môn Xử lý tín hiệu số
trên Matlab và trên DSPkit 6747
TS.Nguyễn Hồng Thịnh - TS.Lưu Mạnh Hà
TS.Trần Thị Thuý Quỳnh
Nguyễn Hồng Thịnh, Lưu Mạnh Hà, Trần Thị Thuý Quỳnh
Hướng dẫn thực hành MÔN XỬ LÝ TÍN HIỆU SỐ
trên Matlab và trên DSPkit 6747
Tài liệu lưu hành nội bộ UET 1 MỤC LỤC 1
Làm quen với ngôn ngữ lập trình MATLAB 5 1.1
Giới thiệu chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2
Giao diện sử dụng của Matlab . . . . . . . . . . . . . . . . . . . . . . . 5 1.3
Biến số trong Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4
Vector và ma trận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5
Phép toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5.1
Phép toán số học . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2
Phép toán quan hệ . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3
Phép toán logic (And, or,xor, not..) và phép toán trên bit . . . 9 1.5.4
Phép toán trên tập hợp . . . . . . . . . . . . . . . . . . . . . . . 11 1.6
Cấu trúc điều khiển và cấu trúc lặp . . . . . . . . . . . . . . . . . . . . 12 1.6.1
Cấu trúc điều kiện . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.2
Cấu trúc lặp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.7
Function và script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.8
I/O và File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.9
Đồ thị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2
Biểu diễn và phân tích tín hiệu trong
miền thời gian và miền tần số 20 2.1
Tín hiệu cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1.1
Tín hiệu rời rạc . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.1.2
Tín hiệu liên tục . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2
Các phép toán trên tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.1
Phép toán không phụ thuộc vào biến thời gian: . . . . . . . . 24 2.2.2
Phép toán phụ thuộc vào biến thời gian: . . . . . . . . . . . . . 25 2.3
Tín hiệu trong miền tần số . . . . . . . . . . . . . . . . . . . . . . . . . 27 3 Lấy mẫu tín hiệu 30 3.1
Lý thuyết lấy mẫu tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.1.1
Định lý lấy mẫu Nyquist . . . . . . . . . . . . . . . . . . . . . . 32 3.2
Lấy mẫu tín hiệu âm thanh . . . . . . . . . . . . . . . . . . . . . . . . 38 4
Hệ thống tuyến tính bất biến rời rạc 40 4.1
Hệ thống tuyến tính bất biến . . . . . . . . . . . . . . . . . . . . . . . 40 2
Hướng dẫn thực hành Xử lý tín hiệu số 4.2
Đáp ứng xung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2.1
Tính chất của hệ thống . . . . . . . . . . . . . . . . . . . . . . . 40 4.2.2
Xác định đáp ứng lối ra của hệ thống . . . . . . . . . . . . . . 41 4.3
Phương trình sai phân và hàm truyền . . . . . . . . . . . . . . . . . . 41 4.3.1
Xác định đáp ứng lối ra của hệ thống . . . . . . . . . . . . . . 43 4.3.2
Xác định đáp ứng xung của hệ thống . . . . . . . . . . . . . . 44 4.3.3
Hàm truyền và giản đồ điểm cực điểm không . . . . . . . . . 44 4.4
Đáp ứng tần số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.5
Bài tập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5
Thiết kế cấu trúc hệ thống 50 5.1
Cấu trúc hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.2
Cấu trúc nối tiếp và cấu trúc song song . . . . . . . . . . . . . . . . . 52 5.2.1
Thiết kế cấu trúc tối ưu kiểu nối tiếp . . . . . . . . . . . . . . . 53 5.2.2
Thiết kế cấu trúc tối ưu kiểu song song . . . . . . . . . . . . . 56 6
Ứng dụng của xử lý tín hiệu trong tạo hiệu ứng âm thanh 59 6.1
Âm thanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2
Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.3
Tiếng ngân (Reverberation) . . . . . . . . . . . . . . . . . . . . . . . . 61 6.4
Chipmunks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.5
Optimus Primes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7
Thiết kế bộ lọc số IIR, FIR 66 7.1
Bộ lọc số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.2
Lọc IIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.3
fdatool và fvtool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 7.4
Thiết kế bộ lọc số FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.4.1
Thiết kế sử dụng phương pháp cửa số . . . . . . . . . . . . . . 73 7.4.2
Chuyển đổi giữa các bộ lọc . . . . . . . . . . . . . . . . . . . . 75 7.4.3
Sử dụng lệnh có sẵn của Matlab . . . . . . . . . . . . . . . . . 76 8 Xử lý tiếng nói 78 8.1
Tiếng nói - Speech . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 8.2
Thu tiếng nói . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.3
Đặc điểm của tiếng nói . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.4
Loại nhiễu trong file âm thanh . . . . . . . . . . . . . . . . . . . . . . 82 3 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số 9
Lọc nhiễu và phát hiện tín hiệu điện tim bất thường 87 9.1
Giới thiệu chung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.1.1
Sơ lược về hệ điện tim . . . . . . . . . . . . . . . . . . . . . . . 87 9.1.2
Hình thái học của tín hiệu điện tim . . . . . . . . . . . . . . . . 88 9.1.3
Nhiễu trong ECG . . . . . . . . . . . . . . . . . . . . . . . . . . 90 9.1.4
Rối loạn nhịp tim (Arrhythmia) . . . . . . . . . . . . . . . . . . 91 9.2
Phát hiện rối loạn nhịp tim . . . . . . . . . . . . . . . . . . . . . . . . . 92 9.2.1
Lọc nhiễu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 9.2.2
Phát hiện rối loạn nhịp tim . . . . . . . . . . . . . . . . . . . . 93 10 Xử lý ảnh 97
10.1 Hiển thị ảnh và chuyển đổi giữa các kênh mầu khác nhau . . . . . . . 97
10.1.1 Đọc và hiển thị ảnh . . . . . . . . . . . . . . . . . . . . . . . . . 97
10.1.2 Chuyển đổi ảnh trong các không gian mầu (colorspace) . . . . 98
10.2 Độ phân giải ảnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
10.2.1 Tăng độ phân giải sử dụng thuật toán nội suy - Interpolation 101
10.2.2 Giảm độ phân giải ảnh sử dụng lấy mẫu lại - Resampling . . 101
10.3 Toán tử trong ảnh - Image operator . . . . . . . . . . . . . . . . . . . . 101
10.4 Miền tần số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
10.4.1 Lọc trong miền tần số . . . . . . . . . . . . . . . . . . . . . . . 108
11 Xử lý tín hiệu số sử dụng mạch DSP TMS320C6747 Floating-Point Starter Kit 111
11.1 TMS320C6747 Floating-Point Starter Kit . . . . . . . . . . . . . . . . . 111
11.1.1 Giới thiệu về phần cứng của kit DSP TMS320C6747 Floating-
Point Starter Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
11.1.2 Giới thiệu môi trường biên dịch CCS . . . . . . . . . . . . . . . 113
11.1.3 Kết nối kit DSP với máy tính . . . . . . . . . . . . . . . . . . . 114
11.1.4 Soạn thảo, biên dịch và chạy code . . . . . . . . . . . . . . . . 114
11.2 Phần thực hành: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
11.2.1 Điều khiển LED trên kit . . . . . . . . . . . . . . . . . . . . . . 117
11.2.2 Thực thi một số hiệu ứng âm thanh . . . . . . . . . . . . . . . 119 4 Signal and System Lab, UET-VNU Chương
LÀM QUEN VỚI NGÔN NGỮ LẬP TRÌNH MATLAB 1
Mục đích của bài thực hành là:
• Làm quen với môi trường làm việc của MATLAB, các lệnh cơ bản và các thư viện cần dùng
• Sử dụng tốt phương pháp tính toán trên ma trận và các lệnh vẽ hình. 1.1 Giới thiệu chung
Matlab, viết tắt của Matrix Laboratory, là một phần mềm tính toán được sử dụng rất
phổ biến. Đặc biệt Matlab cho phép tính toán rất nhanh trên ma trận (như nhân,
cộng, đảo các ma trận số chiều lớn), và có giao diện đồ họa (vẽ hình, hiển thị,
mô phỏng) rất hiệu quả. Ngoài các hàm cơ bản, Matlab còn cung cấp các thư viện
chuyên dụng (Toolbox), như thư viện xử lý tín hiệu (Signal Processing), thư viện xử
lý ảnh và thị giác máy (Image Processing and Computer Vision), thư viện hệ thống
điều khiển (Control Systems), thư viện truyền thông không dây (Wireless Commu-
nications). Mỗi một thư viện đều cung cấp các hàm mô phỏng các thuật toán cơ
bản và nâng cao trong lĩnh vực, vì vậy nó được sử dụng rất nhiều trong nghiên cứu
và mô phỏng...Matlab là phần mềm thương mại, hiện có trên Window, Mac OS và
Linux. Điều đặc biệt là khi đã lựa chọn cài đặt các thư viện (khi cài từ đĩa CD), thì các
thư viện đã được tích hợp sẵn vào môi trường làm việc của Matlab. Trong quá trình
sử dụng, ta không cần phải add thêm thư viện vào nữa. Trong nội dung chương
trình, chúng ta sẽ sử dụng Matlab v.2014 trở lên. Các phiên bản thấp hơn, sẽ có một
vài thay đổi trong cấu trúc gọi hàm, tham số; nên nếu sử dụng các phiên bản thấp
hơn, cần sử dụng trực tiếp lệnh Help của Matlab để điều chỉnh thay đổi cách khai báo cho phù hợp. 1.2
Giao diện sử dụng của Matlab
Matlab trên các hệ điều hành khác nhau có khác nhau đôi chút. Tuy nhiên, nó đều
bao gồm một số cửa sổ chính, như hình vẽ.
• Cửa sổ lệnh (Command Window): là nơi bạn gõ lệnh Matlab. Đây có thể là các
phương trình đơn giản mà bạn muốn đánh giá, hoặc các biểu thức phức tạp
hơn liên quan đến kịch bản Matlab hoặc các hàm. Trên cửa số lệnh có thể thấy 5
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.1: Các thành phần cơ bản trong giao diện làm việc của phần mềm Matlab
dấu con trỏ lệnh ». Nếu một lệnh không kết thúc lệnh bởi dấu ; thì kết quả thực
hiện lệnh đó sẽ hiện tức thì ở trong cửa sổ lệnh.
• Cửa sổ thư mục đường dẫn (Current Directory): là thư mục hiện tại Matlab
đang làm việc với các file trong đó.
• Cửa sổ lịch sử lệnh (Command History): cho thấy các lệnh mà bạn đã nhập
trong quá khứ. Bạn có thể lặp lại bất kỳ lệnh nào bằng cách kích đúp vào
chúng, hoặc bằng cách kéo chúng từ cửa sổ Command History vào cửa sổ lệnh.
Bạn cũng có thể cuộn lại các commands trước bằng cách sử dụng mũi tên lên
trong Cửa sổ Lệnh. Khi bạn học cách chỉnh sửa các tập tin kịch bản Matlab
hoặc các chức năng, bạn cũng có thể kéo các lệnh từ Command History vào một file.
• Cửa sổ hiển thị giá trị biến/tham số (Workspace): cho thấy danh sách các biến
hiện đang được định nghĩa, và thuộc tính của biến (giá trị, kích thước biến,...).
• Trợ giúp (Help): đưa ra thông tin về các hàm số, cách sử dụng hàm số, ví dụ
mô phỏng dùng hàm đó. Có thể gọi trợ giúp nhanh bằng Shift F1 hoặc trên
cửa sổ lệnh gõ doc + tên hàm hoặc help + tên hàm. 6 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số 1.3
Biến số trong Matlab
Matlab khác với các ngôn ngữ C là các biến số không cần khai báo trước định dạng.
Tuỳ vào giá trị khởi tạo mà biến có thể là số (scalar), vector/matrix hay chuỗi (string),
cấu trúc (struct, list) hoặc cell. Các kiểu biến và cách khai báo khởi tạo được giới thiệu
vắn tắt trong hình bên dưới. Ngoài ra, trong Matlab cũng có một vài biến có tên gọi
Hình 1.2: Các kiểu biến cơ bản thường sử dụng trong Matlab và giá trị đặc biệt:
Hình 1.3: Các biến hoặc hằng số đặc biệt trong Matlab
• Cách đặt tên biến: Biến phải bắt đầu bởi một chữ cái; sau đó có thể là chữ, số hay gạch dưới.
• Tên biến phân biệt chữ thường, chữ hoa.
• Tên biến có thể dài hoặc ngắn, tuy nhiên Matlab chỉ sử dụng N chữ cái đầu tiên
trong khai báo làm tên; N được xác định bằng cách gõ lệnh namelengthmax. 7 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
• Lệnh save và load có thể sử dụng để lưu (save) tất cả giá trị các biến có trong
cửa sổ làm việc và gọi lại (load) khi cần.
• clear all (clear var1) sẽ thực hiện xoá tất cả (xoá biến var1) trong môi trường làm việc. 1.4 Vector và ma trận
Trong các kiểu dữ liệu của Matlab, ma trận (matrix) là kiểu dữ liệu đặc biệt, cho
phép tính toán nhanh và hiệu quả.
• Ma trận có thể khai báo dựa trên lệnh gán trực tiếp. Ma trận nhiều chiều có thể
được định nghĩa từ các ma trận có số chiều thấp hơn. Ngoài ra có một số lệnh
cho phép khởi tạo các ma trận đặc biệt như: ones, zeros, eye, rand, randn. Cụ
thể cách khai báo các lệnh có thể tìm hiểu thông qua lệnh help.
• Ma trận A, thì các thành phần của nó được gắn chỉ số index, bắt đầu từ 1 và
kết thúc bởi end. Ví dụ thành phần hàng i, cột j của ma trận A sẽ được lấy giá
trị bằng cách sử dụng lệnh A(i, j).
• Dấu : được sử dụng rất hiệu quả trong khai báo vector, dãy số, trích xuất thành
phần chỉ số của ma trận và trong các phép lặp. Cấu trúc thường sử dụng là
start-index: stop-index hoặc start-index: step: stop-index. Nếu dấu : đứng
một mình trong khai báo của ma trận, nó có nghĩa là tất cả hàng (hay cột) của
ma trận đó. Một số lệnh ví dụ cách lấy giá trị các thành phần của ma trận A có thể tham khảo như sau:
• Khi sử dụng ma trận, ta thường không sử dụng các cấu trúc lặp (Loop) mà
thường sử dụng chỉ số index, và các hàm tính toán có sẵn để giảm thời gian
tính toán. Một số hàm thông dụng liệt kê trong Hình 1.5. 1.5 Phép toán
Có nhiều kiểu phép toán thường được dùng trong Matlab. Có thể chia thành một số loại như sau:
• Phép toán số học (trên số hoặc vector/ma trận số)
• Phép toán quan hệ (dùng trong lệnh điều kiện)
• Phép toán logic (And, or, xor, not..) và phép toán trên bit (bitwise)
• Phép toán trên tập hợp 8 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.4: Cách lấy giá trị của ma trận A, dựa theo index
1.5.1 Phép toán số học
Giữa các số vô hướng, ta có thể thực hiện cộng, trừ, nhân, chia... Đối với các phép
cộng trừ nhân chia... giữa ma trận và vector cần đảm bảo phù hợp về số chiều. Đặc
biệt, khi muốn thực hiện phép toán đôi một giữa các thành phần ở cùng vị trí của
ma trận hay vector, ta thêm dấu .ngay trước phép toán. Chi tiết về phép toán mô tả ở Hình 1.6.
1.5.2 Phép toán quan hệ
Các phép toán quan hệ thường được dùng trong lệnh điều kiện, để kiểm tra xem
một mệnh đề đúng hay sai. Các phép toán quan hệ cơ bản thường được sử dụng là
: <, ≤, >, ≥, ==, ∼= (Hình 1.7).
1.5.3 Phép toán logic (And, or,xor, not..) và phép toán trên bit
• Các phép toán and, or, not trực tiếp trên các biến là số vô hướng lần lượt là &&, ||, ∼.
• hoặc đôi một giữa các thành phần của ma trận hay vector (element-wise) &, |, ∼.
• Bên cạnh đó, cũng có thể sử dụng các hàm của Matlab để thực hiện các phép
toán logic như: and(A, B); or(A, B), not(A, B), xor(A, B)... 9 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.5: Một số hàm liên quan đến ma trận
• Khi thực hiện phép toán nhị phân ở mức bit, các phép toán sau thường được
sử dụng (khi tính toán, biến đầu vào trước hết được chuyển sang dạng nhị
phân, sau đó áp dụng với các toán tử nhị phân (AND, OR, XOR) tương ứng trên từng cặp bit). 10 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.6: Các phép toán cơ bản
Hình 1.7: Các phép toán quan hệ
Hình 1.8: Các phép toán nhị phân
1.5.4 Phép toán trên tập hợp
Khi A, B là các tập hợp; Matlab cung cấp một số phép toán trên đó như inter-
sect(A,B), ismember(A,B), setdiff(A,B), union.... Có thể sử dụng help của matlab
để tra cứu các lệnh liên quan và cách sử dụng của chúng. 11 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số 1.6
Cấu trúc điều khiển và cấu trúc lặp
Trong lập trình, chúng ta thường xuyên phải sử dụng lệnh điều kiện và lặp.
1.6.1 Cấu trúc điều kiện
• Ta có thể sử dụng các kiểu khai báo:
if(điều kiện) ....end hoặc
if(điều kiện1)....else....end hoặc
if(điều kiện1)....elseif(điều kiện 2)....elseif(điều kiện3)...else...end để thực hiện lệnh điều kiện.
• Lưu ý là luôn cần có end khi kết thúc một đoạn lệnh điều kiện
• Có thể có nhiều elseif giữa một cặp if và else. Matlab code 1.6.1
% program to compare two numbers
% generate random number for your age n = randi(100,1); age = 23;
% check the number is greater than your age if n > age disp(’i am younger’) elseif n < age disp(’you are younger’) else disp(’we are of same age’) end 1.6.2 Cấu trúc lặp
• Ta sử dụng cấu trúc for...end hoặc while...end để thực hiện lệnh lặp.
• Lưu ý là luôn cần có end khi kết thúc một đoạn lệnh lặp. 1.7 Function và script
• Bên cạnh các hàm có sẵn của Matlab thì người dùng cũng có thể viết các hàm
riêng tuỳ theo bài toán. Cấu trúc lệnh khai báo hàm sẽ là: 12 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.9: Ví dụ về cách sử dụng cấu trúc lặp với lệnh for
function [output1,....outputN]= ten_ham(input1, ..., inputM). Các hàm sẽ được
định nghĩa là lưu trong các file riêng rẽ. Tên file phải trùng với tên hàm.
Hình 1.10: Ví dụ về khai báo hàm mymax.m, thực hiện tìm max của năm số
• Các hàm cũng có thể định nghĩa bên trong một hàm khác. Khi đó, nó được gọi
là nested function. Hình 1.11 là ví dụ cách khai báo của một nested function.
Hình 1.11: Ví dụ về cách khai báo nested func B bên trong hàm A 13 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
• Khi hàm số chỉ có dạng một dòng, có thể dùng kiểu khai báo dạng Anony-
mous Functions. Hàm anonymous có thể khai báo trực tiếp trong cửa sổ lệnh
hoặc trong hàm, script lệnh. Cấu trúc của Anonymous Functions có dạng: f =
@(arglist)expression. Ví dụ như code Matlab 1.7.1. Matlab code 1.7.1 power = @(x,n)x.^n; result1= power(2,3)
• Đôi khi ta muốn thực hiện một tập hợp các lệnh, các hàm mà không muốn
khai báo đầu vào, đầu ra mà lấy trực tiếp giá trị biến từ môi trường làm việc;
ta có thể viết chúng thành một script [đoạn lệnh]. 1.8 I/O và File I/O
• Khi muốn nhập trực tiếp từ bàn phím và xuất dữ liệu ra màn hình, ta có thể
sử dụng các hàm liên quan đến I/O. Bên cạnh, các kiểu hiển thị cũng được tuỳ
biến tương ứng dựa trên định dạng format (Hình 1.12).
• Khi muốn mở file và đóng các file dạng text trong Matlab, ta có thể sử dụng
các lệnh liên quan đến file I/O liệt kê trong Hình 1.13.
• Riêng với file có định dạng đặc biệt như âm thanh, file hình ảnh, video... ta
dùng các hàm trong các thư viện đặc biệt để mở.
• Khi muốn save hay ghi file ra ta có thể sử dụng lệnh save hoặc dlmwrite. 1.9 Đồ thị
• Một điểm mạnh nữa của Matlab là vẽ và hiển thị dữ liệu trong đồ thị 2D, 3D.
Lệnh Matlab cơ bản nhất để vẽ đồ thị 2D, y theo x là plot(x, y, ’color symbol
style’ ); khi đó x là giá trị trục hoành của đồ thị. Chú ý: Khi vẽ hình, chiều dài
hai vector x, y phải như nhau.
• Ta cũng có thể vẽ nhiều hàm số dùng cùng một lệnh theo cấu trúc: plot(x, y1, x, y2).
• Khi gọi lệnh vẽ hình (ví dụ plot), mặc định hình mới sẽ vẽ đè lên hình cũ. Nếu
muốn vẽ trên hình mới, thêm lệnh figure phía trước lệnh vẽ hình. Nếu muốn
vẽ trên cùng hình, dùng lệnh hold on. 14 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.12: Các lệnh cơ bản liên quan đến I/O trực tiếp
• Khi muốn vẽ nhiều hình con trong một hình lớn, ta sử dụng subplot và plot.
Lệnh subplot sẽ xác định tổng số hình con cần vẽ và chỉ ra vị trí hình vẽ cần đặt
;lệnh plot sẽ vẽ đồ thị tương ứng tại vị trí đó. Cấu trúc lệnh sẽ là: subplot(số
hàng, số cột, số thứ tự hình vẽ) (Hình 1.17).
• Bên cạnh đó, ta cũng có thể chọn tham số thuộc tính ’color symbol style’ cho
các đường trong hình vẽ. Các tham số này được mô tả trong Hình 1.18.
• Một số lệnh vẽ hình cơ bản hay được sử dụng được liệt kê trong Hình 1.19. Bài tập
1. Tạo một vector hàng, có chiều dài bằng 50, giá trị tăng dần từ 15, cách đều nhau 3.
2. Tạo một vector cột có chiều dài 20, giá trị giảm dần từ 100, cách đều 2.
3. Tạo một ma trận vuông ngẫu nhiên kích thước bằng 10 × 10; hàng chéo chính toàn bằng 0. 15 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.13: Các lệnh cơ bản liên quan đến file I/O
Hình 1.14: VD sử dụng lệnh plot
4. Viết hàm số tìm vị trí của thành phần min, max của một ma trận kích thước
bất kỳ [trả về tất cả các vị trí thoả mãn]. 16 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.15: VD sử dụng lệnh plot vẽ nhiều hàm trong cùng một lệnh
Hình 1.16: VD sử dụng hold on
5. Viết hàm số vẽ đường y = x2, với x =[-10, 10], y = sin(0.2 ∗ π ∗ x) ; x=[-2:2],
y = ex, x=[-10:10] sử dụng subplot và các mầu sắc, loại đường khác nhau. 17 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.17: Format vị trí vẽ hình của subplot, để vẽ nhiều hình con trong cùng một hình
Hình 1.18: Lựa chọn thuộc tính cho các đường trong vẽ hình
Tài liệu tham khảo:
Tham khảo: Matlab Quick Guide 18 Signal and System Lab, UET-VNU
Hướng dẫn thực hành Xử lý tín hiệu số
Hình 1.19: Các lệnh thường dùng trong biểu diễn đồ thị 19 Signal and System Lab, UET-VNU
