Tìm hiểu một số phương pháp nhận dạng tiếng nói và xây dựng hệ nhận dạng tiếng nói các chữ số tiếng Việt bằng mạng nơron trên môi trường Matlab - Pdf 39

LỜI NÓI ĐẦU
Ngay khi phát minh ra máy tính, con người đã mơ ước máy tính có thể nói
chuyện với mình. Yêu cầu đơn giản nhất là máy có thể xác định được từ ngữ mà
chúng ta nói với máy. Đó là mục tiêu của ngành nhận dạng tiếng nói.
Đối với con người, việc nghe, nhất là nghe tiếng mẹ đẻ là một vấn đề khá
đơn giản. Còn đối với máy tính, xác định một chuỗi tín hiệu âm thanh là sự phát
âm của một từ nào hoàn toàn không đơn giản, khó khăn cũng như việc học nghe
ngoại ngữ của chúng ta.
Lĩnh vực nhận dạng tiếng nói đã được nghiên cứu hơn 4 thập kỉ và hiện nay
mới chỉ có một số thành công. Có thể kể đến hệ thống nhận dạng tiếng Anh (ví
dụ: phần mềm Via Voice của IBM, hệ thống nhận dạng tiếng nói tích hợp của
OfficeXP…). Các hệ thống này hoạt động khá tốt (cho độ chính xác khoảng 90 95%) nhưng còn xa mới đạt đến mức mơ ước của chúng ta: có một hệ thống có
thể nghe chính xác và hiểu hoàn toàn những điều ta nói.
Riêng với tiếng Việt, lĩnh vực nhận dạng tiếng nói còn khá mới mẻ. Chưa
hề thấy xuất hiện một phần mềm nhận dạng tiếng Việt hoàn chỉnh trên thị trường.
Số công trình nghiên cứu về nhận dạng tiếng nói tiếng Việt được công bố rất
hiếm hoi, và kết quả còn hạn chế về bộ từ vựng, độ chính xác…. Tiếng Việt có
nhiều đặc tính khác với các ngôn ngữ đã được nghiên cứu nhận dạng nhiều như
tiếng Anh, tiếng Pháp. Do đó việc nghiên cứu nhận dạng tiếng Việt là rất cần
thiết.
Vì những lí do trên, tôi chọn đề tài “Tìm hiểu một số phương pháp nhận
dạng tiếng nói và xây dựng hệ nhận dạng tiếng nói các chữ số tiếng Việt bằng
mạng nơron trên môi trường Matlab”, nhằm nghiên cứu các phương pháp nhận
dạng tiếng nói đối với tiếng Việt và thử nghiệm xây dựng một hệ thống nhận
dạng cỡ nhỏ.
Khoá luận gồm có 5 chương:
1. Chương 1 trình bày tổng quan về nhận dạng tiếng nói, nhận dạng tiếng
nói tiếng Việt và một số phương pháp nhận dạng phổ biến.
2. Chương 2 trình bày về môi trường Matlab.
3. Chương 3 trình bày về trích chọn đặc trưng cho nhận dạng.
4. Chương 4 trình bày sơ lược về mạng nơron và toolbox NetLab cho

MỤC LỤC ....................................................................................................................................... 3
CHƯƠNG 1. NHẬN DẠNG TIẾNG NÓI..................................................................................... 5
1.1. NHẬN DẠNG TIẾNG NÓI VÀ MỘT SỐ PHƯƠNG PHÁP NHẬN DẠNG ............... 5
1.1.1. Nhận dạng tiếng nói ................................................................................................................5
1.1.2. Một số phương pháp nhận dạng tiếng nói phổ biến.................................................................6
1.1.2.1. Phương pháp ngữ âm - âm vị học (acoustic-phonetic approach) ....................................6
1.1.2.2. Phương pháp nhận dạng mẫu (pattern recognition approach)........................................7
1.1.2.3. Phương pháp trí tuệ nhân tạo (artifactial intelligence approach) ....................................8

1.2. NHẬN DẠNG TIẾNG VIỆT .......................................................................................... 9
1.2.1. Một số đặc điểm ngữ âm tiếng Việt .......................................................................................9
1.2.2. Những thuận lợi và khó khăn đối với nhận dạng tiếng nói tiếng Việt ..................................11
1.2.2.1. Thuận lợi ......................................................................................................................11
1.2.2.2. Khó khăn ......................................................................................................................11

CHƯƠNG 2. MÔI TRƯỜNG MATLAB.................................................................................... 12
2.1. GIAO DIỆN VÀ CÁC THÀNH PHẦN CƠ BẢN CỦA MATLAB ............................. 13
2.1. LỆNH TRONG MATLAB ............................................................................................ 13
2.2. BIẾN TRONG MATLAB ............................................................................................. 14
2.2.1. Sử dụng biến trong Matlab....................................................................................................14
2.2.2 Nhập (Import) và xuất (Export)..............................................................................................15

2.3. MA TRẬN TRONG MATLAB .................................................................................... 16
2.3.1. Ma trận (matrix), vectơ (vector) và vô hướng (scalar) ..........................................................16
2.3.2. Một số ma trận, vector đặc biệt .............................................................................................16
2.3.3. Các phép toán với vô hướng..................................................................................................17
2.3.4. Các phép toán với vector.......................................................................................................17
2.3.5. Các phép toán với ma trận.....................................................................................................18

2.4. CÁC HÀM THÔNG DỤNG TRONG MATLAB......................................................... 19

3.1.7. Tính toán đặc trưng delta ......................................................................................................32

3.2. TOOLBOX VOICEBOX TRONG MATLAB .............................................................. 33
CHƯƠNG 4. MẠNG NƠRON NHÂN TẠO............................................................................... 34
4.1. MÔ HÌNH MẠNG NƠ RON ........................................................................................ 34
4.1.1. Mô hình một nơron perceptron..............................................................................................34
4.1.2. Mô hình mạng nơron MLP....................................................................................................35
4.1.3. Huấn luyện mạng nơron MLP...............................................................................................36
4.1.5. Ưu điểm và nhược điểm của mạng nơron .............................................................................38

4.2. SỬ DỤNG MẠNG NƠRON TRONG NHẬN DẠNG MẪU ....................................... 39
4.2.1. Một phương pháp tiếp cận dựa vào xác suất phân lớp ..........................................................39
4.2.2. Nhược điểm của mạng MLP trong nhận dạng tiếng nói........................................................39
4.2.3. Một số phương pháp tiếp cận khác........................................................................................39

4.3. MẠNG NƠRON TRÊN MÔI TRƯỜNG MATLAB .................................................... 40
4.3.1. Khởi tạo mạng MLP..............................................................................................................40
4.3.2. Huấn luyện mạng MLP .........................................................................................................40
4.3.3. Sử dụng mạng MLP ..............................................................................................................41

CHƯƠNG 5. XÂY DỰNG HỆ NHẬN DẠNG CHỮ SỐ TIẾNG VIỆT................................... 42
5.1. XÂY DỰNG HỆ THỐNG NHẬN DẠNG.................................................................... 42
5.1.1. Mô tả chung về hệ thống .......................................................................................................42
5.1.2. Sơ đồ khối của hệ thống ........................................................................................................42
5.1.3. Thu thập và tiền xử lí tín hiệu tiếng nói ................................................................................43
5.1.4. Phân chia bộ dữ liệu và phân lớp ..........................................................................................44
5.1.5. Trích chọn đặc trưng MFCC .................................................................................................44
5.1.6. Tính đầu vào cho mạng .........................................................................................................44
5.1.7. Xây dựng và huấn luyện và thử nghiệm mạng ......................................................................46
5.1.8. Sử dụng mạng trong nhận dạng.............................................................................................46






Đọc chính tả. Là ứng dụng được sử dụng nhiều nhất trong các hệ
nhận dạng. Thay vì nhập liệu bằng tay thông qua bàn phím, người sử
dụng nói với máy qua micro và máy xác định các từ được nói trong
đó.
Điều khiển - giao tiếp không dây. Chẳng hạn hệ thống cho phép máy
tính nhận lệnh điều khiển bằng giọng nói của con người như: “chạy
chương trình”, “tắt máy”… Một số ưu điểm của việc sử dụng tiếng
nói thay cho các thiết bị vào chuẩn như bàn phím, con chuột là: thuận
tiện, tốc độ cao, không bị ảnh hưởng của cáp, khoảng cách, không đòi
hỏi huấn luyện sử dụng...
Điện thoại-liên lạc. Một số hệ thống (chẳng hạn ở máy điện thoại di
động) cho phép người sử dụng đọc tên người trong danh sách thay vì
bấm số. Một số hệ thống khác (ở ngân hàng, trung tâm chứng
khoán…) thực hiện việc trả lời tự động đối với các các cuộc gọi hỏi về
tài khoản…


Tuy nhiên vấn đề nhận dạng tiếng nói gặp rất nhiều khó khăn. Một số khó
khăn chủ yếu là:


Tiếng nói là tín hiệu thay đổi theo thời gian. Mỗi người có một giọng
nói, cách phát âm khác nhau... Thậm chí một người phát âm cùng một
từ mà mỗi lần khác nhau cũng không giống nhau (chẳng hạn về tốc
độ, âm lượng...)

chế sinh lí học của việc phát âm và việc nghe của con người.
Nhận dạng mẫu: nghiên cứu các thuật toán để phân lớp, huấn luyện
và so sánh các mẫu dữ liệu...
Lí thuyết thông tin: nghiên cứu các mô hình thống kê, xác suất; các
thuật toán tìm kiếm, mã hoá, giải mã, ước lượng các tham số của mô
hình…
Ngôn ngữ học: tìm hiểu mối quan hệ giữa ngữ âm và ngữ nghĩa, ngữ
pháp, ngữ cảnh của tiếng nói.
Tâm-sinh lí học: tìm hiểu các cơ chế bậc cao của hệ thống nơron của
bộ não người trong các hoạt động nghe và nói.
Khoa học máy tính: nghiên cứu các thuật toán, các phương pháp cài
đặt và sử dụng hiệu quả các hệ thống nhận dạng trong thực tế.

1.1.2. Một số phương pháp nhận dạng tiếng nói phổ biến
1.1.2.1. Phương pháp ngữ âm - âm vị học (acoustic-phonetic approach)
Phương pháp ngữ âm - âm vị học dựa trên lý thuyết âm vị: lí thuyết này khẳng
định sự tồn tại hữu hạn và duy nhất các đơn vị ngữ âm cơ bản trong ngôn ngữ nói
gọi là âm vị, được phân chia thành: nguyên âm - phụ âm, vô thanh-hữu thanh, âm
vang -âm bẹt… Các âm vị có thể xác định bởi tập các đặc trưng trong phổ của
tín hiệu tiếng nói theo thời gian (độc giả có thể tham khảo thêm ở [10]).
Đặc trưng quan trọng nhất của âm vị là formant. Đó là các vùng tần số có
cộng hưởng cao nhất của tín hiệu. Ngoài ra còn một số đặc trưng khác như âm
vực (cao độ - pitch), âm lượng…
Hệ thống nhận dạng dựa trên phương pháp này sẽ tách các đặc trưng từ tín
hiệu tiếng nói và xác định chúng tương ứng với âm vị nào. Sau đó, dựa vào một



6


Dữ liệu huấn luyện

1) Giai đoạn huấn luyện thực hiện các nhiệm vụ: thu thập mẫu, phân lớp
và huấn luyện hệ thống ghi nhớ các mẫu đó.

Minh hoạ: Sơ đồ giai đoạn huấn luyện của phương pháp đối sánh mẫu

2) Giai đoạn nhận dạng: nhận vào đối tượng cần nhận dạng, so sánh với
các mẫu và đưa ra kết quả là mẫu giống đối tượng nhất.



7


Thông tin phân lớp

Đối tượng cần nhận dạng

Minh hoạ: Sơ đồ giai đoạn nhận dạng của phương pháp đối sánh mẫu

Phần lớn các hệ nhận dạng thành công trên thế giới là sử dụng phương pháp
này. Phương pháp có những ưu điểm sau:
1. Sử dụng đơn giản, dễ hiểu, mang tính toán học cao (lý thuyết xác suất
thống kê, lý thuyết máy học, …)
2. Ít bị ảnh hưởng của những biến thể về bộ từ vựng, tập đặc trưng, đơn vị
nhận dạng, môi trường xung quanh…
3. Cho kết quả cao. Điều này đã được kiểm chứng trong thực tế.
1.1.2.3. Phương pháp trí tuệ nhân tạo (artifactial intelligence approach)
Phương pháp trí tuệ nhân tạo nghiên cứu cách học nói và học nghe của con

Theo thống kê trong tiếng Việt có khoảng 6000 âm tiết. Nhìn về mặt ghi
âm: âm tiết tiếng Việt có cấu tạo chung là: phụ âm-vần. Ví dụ âm tin có phụ âm t,
vần in. Phụ âm là một âm vị và âm vị này liên kết rất lỏng lẻo với phần còn lại
của âm tiết (hiện tượng nói lái).
Vần trong tiếng Việt lại được cấu tạo từ các âm vị nhỏ hơn, trong đó có một
âm vị chính là nguyên âm.
Hình sau là phổ tín hiệu của âm tiết “ba”. Chúng ta có thể quan sát và phân
biệt rõ miền nhiễu nền, miền phổ của phụ âm b và nguyên âm a (miền đậm hơn
là có mật độ năng lượng lớn hơn).

Minh hoạ: Phổ tín hiệu của âm tiết “ba”, có miền nhiễu nền (silence), miền tín hiệu của
phụ âm /b/ và nguyên âm /a/ (miền đậm hơn là có mật độ năng lượng lớn hơn).



9


Quan sát phổ các âm tiết tương tự chúng ta có thể rút ra kết luận: các phụ
âm và nguyên âm đều phân biệt với nhau rất rõ qua sự phân bố năng lượng tại
các miền tần số, ví dụ: phụ âm ở tần số thấp, năng lượng nhỏ, nguyên âm có năng
lượng lớn ở cả vùng tần số cao. Vùng không có tín hiệu tiếng nói (nhiễu nền và
khoảng lặng) có năng lượng thấp và chỉ tập trung ở các tần số rất thấp.
Các nguyên âm có tần phổ (spectrum) khác nhau khá rõ. Hình sau minh hoạ
sự khác nhau về phổ của 5 nguyên âm cơ bản. Miền đậm là miền có mật độ năng
lượng cao.

Minh hoạ: Sự khác nhau về phổ của 5 nguyên âm cơ bản. Miền đậm là miền có mật độ
năng lượng cao (vùng có formant).


có một số thuận lợi sau:




Tiếng Việt là ngôn ngữ đơn âm, số lượng âm tiết không quá lớn. Điều
này sẽ giúp hệ nhận dạng xác định ranh giới các âm tiết dễ dàng hơn
nhiều. Đối với hệ nhận dạng các ngôn ngữ Ấn-Âu (tiếng Anh, tiếng
Pháp...) xác định ranh giới âm tiết (endpoint detection) là vấn đề rất
khó và ảnh hưởng lớn đến kết quả nhận dạng.
Tiếng Việt là ngôn ngữ không biến hình từ. Âm tiết tiếng Việt ổn
định, có cấu trúc rõ ràng. Đặc biệt không có 2 âm tiết nào đọc giống
nhau mà viết khác nhau. Điều này sẽ dễ dàng cho việc xây dựng các
mô hình âm tiết trong nhận dạng; đồng thời việc chuyển từ phiên âm
sang từ vựng (lexical decoding) sẽ đơn giản hơn so với các ngôn ngữ
Ấn-Âu. Theo [10], việc chuyển từ phiên âm sang từ vựng cũng là một
vấn đề khó khăn trong nhận dạng các ngôn ngữ Ấn-Âu.

1.2.2.2. Khó khăn
Ngoài những thuận lợi trên, nhận dạng tiếng nói tiếng Việt cũng gặp rất
nhiều khó khăn như sau:








Tiếng Việt là ngôn ngữ có thanh điệu (6 thanh). Thanh điệu là âm vị

bay (Aerospace) hay giải phương trình vi phân (PDE)…
Matlab cũng hỗ trợ lập trình và cho phép tích hợp thư viện do người dùng
xây dựng. Câu lệnh của Matlab được viết rất sát các mô tả kĩ thuật nên lập trình
trên Matlab nhanh và đơn giản hơn so với các ngôn ngữ thông dụng như Pascal,
Fortran… Cú pháp lập trình của Matlab giống C nên không quá khó học. Đặc
biệt Matlab còn có các giao thức để liên kết với các môi trường lập trình khác,
nhất là VC++, chẳng hạn cho phép dịch các hàm trong Matlab thành các chương
trình nguồn C/C++ hoặc hỗ trợ các thư viện DLL từ bên ngoài.
Do những điểm mạnh như vậy của Matlab, chúng tôi quyết định sẽ dùng
Matlab để phát triển hệ nhận dạng của mình.



12


2.1. GIAO DIỆN VÀ CÁC THÀNH PHẦN CƠ BẢN CỦA
MATLAB
Giao diện làm việc thường gặp của Matlab như sau:

Giống như các môi trường khác như AutoCAD, để thao tác với Matlab, ta
gõ lệnh trên cửa sổ lệnh hoặc sử dụng menu. Phần tiếp theo của chương sẽ trình
bày về cách sử dụng lệnh trong Matlab.

2.1. LỆNH TRONG MATLAB
Lệnh trong Matlab có thể phân loại theo chức năng như sau:





Câu lệnh Matlab có thể kết thúc bằng dấu ; hoặc không có. Sau đó
khi gõ lệnh xong, gõ phím Enter thì lệnh sẽ được thực hiện. Nếu
không có dấu ; thì Matlab hiển thị kết quả tính toán (đôi khi rất dài và
làm chậm hệ thống), còn nếu có dấu ; thì Matlab không hiển thị.
Kí pháp ma trận trong Matlab là cặp [ ]. Ma trận được mô tả từng
dòng một, giữa các dòng cách nhau bởi dấu ; giữa các phần tử trên
cùng một dòng cách nhau bởi dấu phân tách như dấu cách, tab... Ví dụ
mô tả ma trân [1 2; 3 4]. (Chú ý mỗi dòng phải có số phần tử bằng
nhau). Trong đoạn trình này p1, p2 là 2 ma trận 1x2 mô tả toạ độ 2
điểm. v=p2-p1 là vector tạo bởi 2 điểm p1, p2.
Câu lệnh d = norm(vt) là câu lệnh gán trị, đồng thời là câu lệnh gọi
hàm: norm là hàm lấy chuẩn của vector.

Bảng sau liệt kê một số lệnh cơ bản của Matlab:
Lệnh

Ý nghĩa

clc

Xoá cửa sổ lệnh.

Clf

Xoá cửa sổ đồ hoạ.

exit, quit

Thoát khởi Matlab.



14


Biến trong Matlab được đặt tên như quy tắc của ngôn ngữ C: chỉ gồm
chữ cái, chữ số, dấu gạch dưới, dài không quá 19 kí tự, phân biệt chữ hoa, chữ
thường.
Để khai báo và khởi tạo biến, ta dùng lệnh gán. Khi gán biến cho một ma
trận, nếu biến chưa tồn tại, Matlab sẽ tạo ra biến mới có kích thước bằng ma trận
đó và gán giá trị của ma trận cho biến. Thường ta hay dùng các lệnh x=[]; hay
x=zeros(m,n) để khởi tạo biến (Xem thêm phần 2.3.2.về các ma trận đặc biệt
để hiểu tác dụng của mỗi lệnh).
Ta có thể nhập giá trị trực tiếp cho biến thông qua lệnh gán và hàm input.
Để hiện thị giá trị của biến ta gõ lệnh chỉ có tên biến, không có dấu ; ở cuối.

2.2.2 Nhập (Import) và xuất (Export)
Toàn bộ các biến đang sử dụng được gọi là không gian làm việc
(workspace) của Matlab. Sau khi thoát khỏi Matlab thì chúng bị xoá. Để làm việc
với dữ liệu được nhiều lần ta phải ghi (save) và nạp (load) các biến đó. Ngoài ra
ta còn có nhu cầu chia xẻ dữ liệu giữa Matlab và các môi trường khác. Matlab
cung cấp chức năng Save và Load để thực hiện các yêu cầu này.
Matlab ghi các biến (không nhất thiết là toàn bộ không gian làm việc) ra các
file có cấu trúc khác nhau: file text ASCII và file nhị phân MAT. Thường chúng
ta ghi dưới dạng file nhị phân, trong trường hợp cần trao đổi dữ liệu chúng ta sẽ
ghi dưới dạng text.
Matlab có khả năng nạp dữ liệu từ nhiều khuôn dạng, ngoài kiểu file text và
file MAT, Matlab còn có thể đọc các file ảnh, file âm thanh, file CSDL, file
Excel để lấy ra các thông tin cần thiết.
Ghi và đọc dữ liệu qua file trong Matlab có thể thực hiện qua 2 lệnh save và
load, cũng có thể thực thi bằng chọn menu. Trong trường hợp ta chắc chắn được

<filename>

Load <filename> x y z

Đọc giá trị các biến x,y,z từ file .MAT có tên
là <filename>

Nếu lệnh Load, Save có tham số -ASCII thì Matlab đọc/ghi file theo cấu trúc
text.

2.3. MA TRẬN TRONG MATLAB
2.3.1. Ma trận (matrix), vectơ (vector) và vô hướng (scalar)
Trong Matlab một bảng m dòng, n cột gọi là một ma trận m×n. Vector là
ma trận một dòng hoặc một cột. Vô hướng là ma trận 1×1 (tương đương với một
giá trị). Matlab hỗ trợ các kiểu vô hướng: thực, phức, kí tự.
Xâu (chuỗi - string) trong Matlab là một vector có các phần tử kiểu kí tự.
Ngoài ma trận 2 chiều như trên, Matlab còn hỗ trợ ma trận nhiều chiều (mỗi
phần tử của ma trận khi đó không phải là một vô hướng mà là một vector hay
một ma trận). Tuy nhiên tất cả các phần tử của ma trận phải có cùng một
kiểu.
Do có thể coi vector và vô hướng là các ma trận đặc biệt nên từ đây nếu chỉ
nói “ma trận”, ta ngầm hiểu đó có thể là vector, vô hướng. Để cho dễ thấy hơn,
trong khoá luận này, tên biến vô hướng thường được viết thường, tên vector, ma
trận thường được viết hoa.
Kí pháp định nghĩa ma trận trong Matlab là cặp [ ]. Ma trận được mô tả
từng dòng một, giữa các dòng cách nhau bởi dấu ; giữa các phần tử trên cùng
một dòng cách nhau bởi dấu phân tách như dấu cách, tab...
⎡1 2 3 ⎤
Ví dụ ma trận ⎢⎢4 5 6⎥⎥ được mô tả trong Matlab là [1 2 3; 4 5 6; 7 8 9].
⎢⎣7 8 8⎥⎦


Vector các phần tử từ a đến b, độ lệch là 1 hay -1 tuỳ thuộc
a lớn hơn hay nhỏ hơn b. Ví dụ 1:5 sinh ra vector [1 2 3
4 5]; 3.6:2 sinh ra vector [3.6 2.6].

a:d:b

Vector các phần tử thực từ a đến b, với khoảng chia d.
Ví dụ 1:0.5:3.1 sinh ra vector [1.0 1.5 2 2.5 3.0]

2.3.3. Các phép toán với vô hướng
Bảng sau mô tả các phép toán thực hiện với 2 giá trị vô hướng. Cột kết quả
môt tả cho trường hợp a=3; b=1.2
Viết trong Matlab

Ý nghĩa

Kết quả

a+b

Cộng 2 giá trị

4.2

a-b

Trừ 2 giá trị

2.8

2.3.4. Các phép toán với vector


17


Các phép toán với vector thực hiện với 2 vector cùng cỡ, kết quả là một
vector cùng cỡ, trong đó mỗi phần tử của vector kết quả là kết quả của phép toán
giữa 2 phần tử tương ứng của 2 vector ban đầu.
Tức là nếu C=A.^B thì C(i)=A(i)^B(i).
Trong bảng sau cột kết quả ứng với A=[4 3]; B=[2 1]
Viết trong Matlab

Ý nghĩa

Kết quả

A+B

Cộng vector

[6 4]

A-B

Trừ vector

[2 2]

A.*B

Cộng, trừ, nhân,
chia, lấy luỹ thừa 2
ma trận cùng kích
thước như phép
toán vector.

A-B
A.*B
A./B
A.^B

Ngoài ra ta còn thực hiện được các phép toán đó giữa một ma trận và một
vô hướng (như đã trình bày ở phần về các phép toán với vô hướng)..
Matlab còn có các phép toán sau đối với các ma trận:
Viết trong Matlab

Ý nghĩa

A*B

Nhân 2 ma trận A(m,n) và B(n,p), được ma trận C(m,p)
mà các phần tử xác định bởi:



18


n


Định dạng lại ma trận A thành ma trận m dòng, n cột

rot90(A,k)

Quay ma trận A 90o, ngược chiều kim đồng hồ k lần.

A^k

Luỹ thừa ma trận: tính ma trận Ak (nhân A k lần), chỉ áp
dụng với ma trận vuông.

inv(A)

Cho ma trận nghịch đảo của A. Chỉ áp dụng với ma trận
vuông

triu(A),tril(A)

Cho ma trận tam giác trên/dưới của A.

2.4. CÁC HÀM THÔNG DỤNG TRONG MATLAB
2.4.1. Một số hàm toán học thông dụng
Matlab có các hàm toán học thông dụng như lượng giác, logarit... để tính
toán. Đối số của hàm là vô hướng hoặc ma trận (vector là trường hợp đặc biệt
của ma trận). Nếu đối số là ma trận thì kết quả là một ma trận cùng cỡ mà mỗi
phần tử của ma trận này có giá trị tương ứng với các phần tử ma trận đã cho.
Viết trong Matlab

Ý nghĩa


log(x), log10(x)

lnx, lgx (tương ứng).

sin(x), cos(x), tan(x)

Các hàm lượng giác sin, cos, tg. x lấy đơn
vị radian.

asin(x),
atan(x)

acos(x), Các hàm lượng giác arcsin, arccos, arctang

Cho arctg của y/x trong khoảng -π đến π,
tuỳ thuộc vào dấu của x,y

atan2(x,y)

2.4.2. Một số hàm vector
Các hàm sau thực hiện cho vector, nếu đối số là ma trận thì kết quả là
vector mà mỗi phần tử tính toán tương ứng với các cột của ma trận.
Viết trong Matlab

Ý nghĩa

sum(X)

Tính tổng các phần tử của vector X.


fs]=wavread(wavfile)

Đọc tín hiệu âm thanh từ file wav cho bởi xâu
wavfile, y là vector mô tả tín hiệu âm thanh


20


(có giá trị thực từ 0 đến 1), fs là tần số lấy mẫu
(giá trị nguyên)
wavwrite(y,fs,wavfile
)

Ghi tín hiệu âm thanh từ file wav cho bởi xâu
wavfile, y là vector mô tả tín hiệu âm thanh, fs
là tần số lấy mẫu.

sound(y)

Phát âm thanh ra loa, y là vector mô tả tín hiệu
âm thanh.

y=wavrecord(n, fs)

Ghi âm (từ micro) với tần số lấy mẫu fs và n
mẫu. Kết quả là vector y.
Đoạn lệnh sau ghi âm trong 2 giây với tần số
lấy mẫu 8kHz, phát lại rồi ghi vào file:
y=wavrecord(16000,8000);

a-bi

abs(x)

môđun

angle(x)

argument

i,j

Kí hiệu đơn bị ảo.

a 2 + b2

arctg(b/a)
−1

Cách viết phép toán và gọi hàm với số thực và số phức hoàn toàn giống
nhau. Các phép toán hay hàm nào thực hiện được với số phức cho kết quả là số
phức tương ứng.



21


2.5. LẬP TRÌNH MATLAB
2.5.1. Chương trình nguồn (m-file), hàm và script

thân hàm phải có các dòng lệnh gán giá trị cho chúng.



22


4. Ngoại trừ các tham số vào/ra, tất cả các biến bên trong hàm đều là biến
địa phương. Chúng được tạo khi có lệnh gán đầu tiên và bị xóa sau khi kết thúc
hàm. Ngược lại, biến trong script thì luôn là biến toàn cục.
5. Lời gọi hàm:
Lệnh gọi hàm có dạng như khai báo hàm, chỉ khác là không được có dấu ;
giữa các tham số đầu ra.
[<các tham số đầu ra>]=<tên hàm>(các tham số đầu vào)

Tuy nhiên Matlab cho phép số tham số đầu vào, đầu ra ít hơn số tham số
hình thức. Người lập trình cần dùng 2 hàm nargin và nargout để xác định số đầu
vào, đầu ra thực sự trong lời gọi hàm (chú ý: .
Chẳng hạn ta có thể dùng lời gọi hàm sau để tính diện tích và chu vi hình
chữ nhật kích thước 4×3:
[dt cv] = dtvc(4,3)

Nếu chỉ quan tâm đến diện tích ta có thể gọi:
dt = dtvc(4,3)

Tuy nhiên trình tự truyền tham số của hàm trong Matlab là từ trái sang, vì
vậy nếu chỉ cần kết quả là chu vi, không quan tâm đến diện tích ta vẫn phải gọi
hàm như câu lệnh đầu tiên, không thể dùng câu lệnh sau:
cv = dtvc(4,3)


1/ Lệnh if đơn
Cú pháp:
if <biểu thức logic>
<nhóm lệnh>
end;

Thực thi:
Lệnh này kiểm tra giá trị của <biểu thức logic>, nếu kết quả là đúng
(khác 0) thì thực hiện <nhóm lệnh>.
2/ Lệnh if else
Cú pháp:
if <biểu thức logic>
<nhóm lệnh 1>
else
<nhóm lệnh 2>
end;

Thực thi:
Lệnh này kiểm tra giá trị của <biểu thức logic>, nếu kết quả là đúng
(khác 0) thì thực hiện <nhóm lệnh 1>, ngược lại thì thực hiện .
3/ Lệnh if elseif
Cú pháp
if <biểu thức logic 1>
<nhóm lệnh 1>
elseif <biểu thức logic 2>



24




Nếu <biểu thức> là ma trận rỗng thì vòng for không thực hiện.
Nếu <biểu thức> là giá trị vô hướng (ma trận 1x1) thì <chỉ số> được
gán bằng giá trị vô hướng đó và <nhóm lệnh> thực hiện đúng một
lần.
Nếu <biểu thức> là một vector (ma trận nx1 hoặc 1xn) thì thực hiện n lần, mỗi lần <chỉ số> nhận một phần tử của vector
(từ trái sang phải).


25



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status