Tải bản đầy đủ (.pdf) (179 trang)

Thực hành Xử lý số tín hiệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.9 MB, 179 trang )

BÀI GIẢNG
THÍ NGHIỆM XỬ LÝ SỐ

TỔNG HỢP: LÊ VĂN HÙNG


PHẦN I
THÍ NGHIỆM XỬ LÝ SỐ
THỰC HIỆN BẰNG MATLAB

BÀI GIẢNG LƯU HÀNH NỘI BỘ
(Biên soạn theo giáo trình chính[2])


MỤC LỤC
Bài 1 Làm quen Matlab và ứng dụng trong DSP ................................................ 1
1.1. Cài đặt matlab .................................................................................................. 1
1.2. Làm quen với Matlab ....................................................................................... 3
1.2.1. Giao diện người dùng.................................................................................... 3
1.2.2. Command Window (command line).............................................................. 4
1.2.3. Current folder (thư mục hiện hành/ thư mục làm việc) .................................. 7
1.2.4. Script file ...................................................................................................... 7
1.2.5. Hàm (Function) ........................................................................................... 11
1.2.6. Workspace .................................................................................................. 16
1.2.7. Thế mạnh của Matlab ứng dụng trong DSP ................................................. 18
1.2.8. Nhập mảng với Matlab................................................................................ 19
1.2.9. Thao tác trên Ma trận .................................................................................. 20
1.2.10. Phân tích thế mạnh toán Ma trận của Matlab trong lập trình DSP.............. 24
1.3. Bài tập: .......................................................................................................... 26
Bài 2 Tín hiệu và hệ thống rời rạc, HỆ THỐNG LTI ....................................... 31
2.1. Tín hiệu và hệ thống rời rạc ........................................................................... 31


2.1.1. Hàm xung đơn vị ........................................................................................ 31
2.1.2. Hàm bước nhảy đơn vị ................................................................................ 32
2.1.3. Các phép toán trên tín hiệu rời rạc............................................................... 33
2.2. Biểu diễn tín hiệu rời rạc ................................................................................ 35
2.3. Đáp ứng xung của hệ thống LTI..................................................................... 41
2.4. Phương trình vi phân...................................................................................... 44
2.5. Tương quan giữa 2 tín hiệu: ........................................................................... 47


2.5.1. Tương quan chéo: ....................................................................................... 47
2.5.2. Tự tương quan............................................................................................. 48
2.6. Bài tập ........................................................................................................... 50
Bài 3 Tín hiệu và hệ thống trong miền tần số, miền Z ...................................... 54
3.1. DTFT/DFT/FFT............................................................................................. 54
Phân biệt các dạng FOURIER: ............................................................................. 54
3.1.1. Fourier liên tục thời gian ............................................................................. 54
3.1.2. Fourier Rời rạc thời gian ............................................................................. 54
3.1.3. Fourier thuật toán ........................................................................................ 55
3.1.4. Phân biệt ..................................................................................................... 55
3.1.5. DFT FFT ................................................................................................. 67
3.1.6. ĐẶC TÍNH CỦA BIẾN ĐỔI IFFT VÀ RÒ RỈ PHỖ ................................. 75
3.1.7. Rò rỉ phổ ..................................................................................................... 76
3.1.8. Ví dụ về FFT............................................................................................... 76
3.2. Biểu diễn hệ thống trong miền Z .................................................................... 89
3.3. Bài tập (xem giáo trình tiếng anh) .................................................................. 91
Bài 4 Cấu trúc FIR, thiết kế FIR ....................................................................... 93
4.1. Phân tích cấu trúc của lọc FIR........................................................................ 93
4.2. Thiết kế FIR bắng phương pháp cửa sổ .......................................................... 96
4.3. Bài tập ......................................................................................................... 112
Bài 5 Các loại lọc IIR, thiết kế IIR ................................................................... 115

5.1. Các loại lọc IIR ............................................................................................ 115
5.2. Thiết kế lọc IIR dùng Matlab ....................................................................... 120
5.2.1. BUTTERWORTH LOWPASS FILTERS ................................................. 120


5.3. Bài tập thiết kế IIR/FIR ................................................................................ 125
Bài 6 LÀM QUEN MÔI TRƯỜNG LẬP TRÌNH CCS7 ................................ 127
6.1. Cài đặt ccs ................................................................................................... 127
6.2. Cách tạo project trên ccs .............................................................................. 127
6.3. Cách tạo một project chạy trên KIT DSK6416 dựa vào lab mẫu .................. 128
Bài 7 LẬP TRÌNH XUẤT NHẬP CƠ BẢN TRÊN KIT TMS320C6416
(LAB_1) ............................................................................................................. 130
Bài 8 THUẬT TOÁN TẠO TÍN HIỆU SÓNG VỚI TẦN SỐ VÀ BIÊN ĐỘ
THAY ĐỔI (LAB_2) ........................................................................................ 140
Bài 9 XUẤT/NHẬP TÍN HIỆU AUDIO TRÊN KIT DSP SỬ DỤNG AUDIO
CODEC, PHÂN TÍCH PHỖ TÍN HIỆU (LAB_3) .......................................... 146
Bài 10 , 11 THỰC HIỆN BỘ LỌC FIR CHO DỮ LIỆU AUDIO TRÊN KIT
DSP (LAB_4, 5) ................................................................................................ 159
Bài 12 Thực hiện bộ lọc IIR cho dữ liệu Audio trên kit DSP (LAB_6) .......... 169


DSP Using Matlab

Draft version

CHƯƠNG 1: TÍN HIỆU VÀ HỆ THỐNG LTI TRÊN
MATLAB
BÀI 1 LÀM QUEN MATLAB VÀ ỨNG DỤNG TRONG DSP
1.1. Cài đặt matlab
Matlab là phần mềm của hãng Matwork tích hợp nhiều lĩnh vực chuyên ngành khác

nhau. Vì thế khi cài đặt Matlab ta chỉ chọn các công cụ liên quan đến lĩnh vực điện,
điện tử, viễn thông. Các toolbox cần cài đặt như DSP, RF, communication,…
Cài đặt tùy chọn như hình sau:

Hình 1.1: Cài đặt tùy chọn
Chọn công cụ cần cài đặt:
 MATLAB 8.1
 Simulink 8.1
 Communications System Toolbox 5.4
 Computer Vision System Toolbox 5.2

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

1


DSP Using Matlab

Draft version

 Control System Toolbox 9.5
 Data Acquisition Toolbox 3.3
 DSP System Toolbox 8.4
 Fixed-Point Designer 4.0
 Fuzzy Logic Toolbox 2.2.17
 Image Acquisition Toolbox 4.5
 Image Processing Toolbox 8.2
 MATLAB Builder EX 2.3.1
 MATLAB Builder JA 2.2.6
 MATLAB Builder NE 4.1.3

 MATLAB Coder 2.4
 MATLAB Compiler 4.18.1
 MATLAB Report Generator 3.14
 Model Predictive Control Toolbox 4.1.2
 Neural Network Toolbox 8.0.1
 RF Toolbox 2.12
 Robust Control Toolbox 4.3
 Signal Processing Toolbox 6.19
 SimPowerSystems 5.8
 SimRF 4.0
 Simulink Control Design 3.7
 Simulink Design Optimization 2.3
 Simulink Design Verifier 2.4
 Simulink PLC Coder 1.5
 Simulink Report Generator 3.14
 Symbolic Math Toolbox 5.10
 System Identification Toolbox 8.2
 Wavelet Toolbox 4.11
 xPC Target 5.4
 xPC Target Embedded Option 5.4

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

2


DSP Using Matlab

Draft version


Hình 1.2: Chọn mục cần cài đặt
1.2. Làm quen với Matlab
1.2.1. Giao diện người dùng
Layout giao diện người dùng của Matlab gồm ba cửa số chính cần quan tâm là
Command window, Current folder và Workspace.
Để hiển thị giao diện mặc định này ta vào mục Desktop chon Destop layout
Default (Đối với Matlab phiên bản 2012a, các phiên bản mới hơn chọn Home,
Layout, Default).

Hình 1.3: Cách hiển thị giao diện mặc định

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

3


DSP Using Matlab

Draft version

1.2.2. Command Window (command line)
Đây là cửa sổ nhập lệnh và hiển thị kết quả của Matlab. Cửa sổ đặc biệt này dùng
để chạy từng dòng lệnh, một đoạn lệnh và các lệnh truy suất khác của Matlab.
Nó tương tự như CMD màn hình DOS của Window, nhưng nó cũng giống như cửa
sổ conlsole xuất kết quả, proplem hoặc kết quả build của các IDE mã nguồn C.
Ví dụ 1.1: Muốn nhập một mảng gồm 10 phần tử số nguyên ta thực hiện ngay
dòng command line .

Command
window

Thư mục

Không gian

hiện hành

biến

Hình 1.4: Giao diện làm việc của Matlab
>>n=1:10; % dòng lệnh này để nhập n là một mảng gồm 10 phần tử nhận giá trị
từ 110

Kết quả của biến n được hiển
thị theo chú thích columns

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

4


DSP Using Matlab

Draft version

Muốn kết quả không hiển
thị ta thêm dấu chấm phẩy cuối
mỗi lệnh hoặc hàm.
Ví dụ 1.2: muốn

nhập


Nhập một đoạn

một

chương trình

đoạn thực hiện chức năng vẽ đồ
thị hình sin ta thực hiện như
sau:
>> n=1:10
y=sin(2*pi/10*n)
plot(n,y)

Kết quả là số liệu
Hình 1.5: Hiển thị kết quả số liệu
Kết quả sẽ xuất cửa sổ đồ thị hình sin.
1

Kết quả là Đồ

0.8

họa luôn được

0.6
0.4

hiển thị cửa sổ


0.2

riêng (figure)

0
-0.2
-0.4
-0.6
-0.8
-1

1

2

3

4

5

6

7

8

9

10


Hình 1.6: Hiển thị kết quả đồ họa

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

5


DSP Using Matlab

Draft version

Ví dụ command line xuất Error nếu sai cú pháp và các lỗi khác.
>> y=sin(2*pi/10*n))
Lỗi cú pháp
được thông báo
ngay command
line
Chú ý: dựa vào thông báo chỉ lỗi này, người viết chương trình có thể sửa lỗi khi bị
sai cú pháp. Trong trường hợp ví dụ trên, lỗi dư một dấu ngoặc đơn được trình gỡ
lỗi thông báo.
Ngoài ra ta có thể thực hiện các lệnh, hàm, các thao tác khác của matlab trên
command line .
Ví dụ ta muốn truy suất cửa số help của Matlab về cú pháp của hàm plot, ngay
command line ta nhập:
>>doc plot
Nhược điểm của command window : quản lý mã nguồn kém do chỉ lưu lại từng
dòng lệnh dưới dạng history, không cho phép quay lại và chỉnh sửa một đoạn
chương trình. Do đó nó được dùng chủ yếu để debug và chạy từng lệnh để kiểm
chứng hoặc để dùng các chức năng truy suất khác của matlab.


Hình 1.7: Cửa sổ help của lệnh doc plot

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

6


DSP Using Matlab

Draft version

Để xóa màn hình command line ta dùng lệnh clc.
>>clc
Để đóng tất cả các cửa sổ hình (figure) ta dùng lệnh close all.
>>close all
1.2.3. Current folder (thư mục hiện hành/ thư mục làm việc)
Current folder là thư mục hiện hành hay thư mục làm việc của Matlab, đây là nơi
quản lý mã nguồn và hàm của Matlab, nó tương tự giống như Project trong các IDE

mã nguồn C nhưng đơn giản hơn nhiều. Tất cả các mã nguồn có liên quan nhau
trong một chương trình đều được lưu ở thư mục làm việc này trừ các thư viện hàm
có sẵn của Matlab. Bằng cách đơn giản này ta không cần phải khai báo đường dẫn,
khai báo thư viện.
Để hiển thị cửa số này ta cần Matlab xuất hiện layout mặc định. Thư mục làm việc
của matlab chứa file quan trọng nhất là file .m hay còn gọi là M-file.
M-file có hai loại là Script file và Function
1.2.4. Script file
Script file là file chứa mã nguồn của một chương trình thực hiện một vai trò chức
năng cố định. Nó được lưu bởi tên do người dùng tự đăt tự đặt. Tuy nhiên cách đặt

tên đúng phải như sau:
 Không đặt các ký tự đặc biệt trùng với các toán hạng của Matlab như +-*/
 Không đươc đặt tên file hoàn toàn số vd 124.m nên vừa có chữ vừa có số vd
bt_124.m

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

7


DSP Using Matlab

Draft version

 Không đặt tên file là tiếng việt có dấu vd: bài tập.m
 Không đặt tên file có khoảng trắng giữa các ký tự
 Không đặt tên file có dấu chấm vd: baitap.1.m thay vao đó là baitap_1.m
 Nên thay gạch ship (_) ngăn cách giữa các ký tự Vd: Ex_2_1.m
Cách mở Script file như sau:

Hoặc nhấn tổ hợp phím Ctr+N ta có cửa số soạn thảo mở được ra

Ví dụ ta muốn viết chương trình thực hiện chức năng vẽ hình sin và lưu lại là
vedothisin.m.
Nhập đoạn code matlab sau vào Script file:
>>n=1:10;
>>y=sin(2*pi/10*n);

Bộ môn viễn thông-Bài giảng lưu hành nội bộ


8


DSP Using Matlab

Draft version

>>plot(n,y)
File được lưu lại như hình dưới:

run

Chú ý: để chú thích hay comment một dòng nào đó thì trước mỗi dòng là ký hiệu
%, khi gặp ký hiệu này Matlab sẽ bỏ qua các ký tự sau nó

Muốn chạy được file này ta phải lưu ở thư mục hiện hành như hình 1.8
Chú ý: Đối với môn thí nghiệm DSP Matlab, sinh viên nên có cách đặt thư mục
hiện hành cho hợp lý để dễ quản lý. Thông thường khi thư mục hiện hành có nhiều
mã nguồn được lưu ở nhiều file, tốt nhất nên tổ chức thành thư mục với những mã
nguồn có liên quan cùng chức năng.

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

9


DSP Using Matlab

Draft version


Chương trình chỉ
chạy khi file được
lưu và thấy ở đây

Hình 1.8: Vùng thư mục hiện hành

Ví dụ giáo trình thực hành DSP Matlab có 3 chương ta nên tổ chức thành 3 thư mục
chứa mã nguồn theo từng chương như sau:

Trong từng chương có ví dụ và các bài tập nên ở phần thực hành Matlab ta cũng
đặt tên giống với cách đặt tên của sách cho đồng bộ và dễ quản lý.
Ví dụ: Chương 2 có các ví dụ Ex2.1 đến Ex2.10 ta nên đặt tên cho mfile của Matlab
là Ex2_1.m, Ex2_2.m… Ex2_10.m các bài tập thì lưu lại dạng P2_1.m, P2_2.m..

Script file và
hàm được sắp
xếp riêng biệt

Hàm sẽ được gọi
bởi các Script
file trên

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

10


DSP Using Matlab

Draft version


Chú ý quan trọng: Đầu đoạn code của một Script file nên ghi ba lệnh dưới đây:
>>clc : xóa màn hình xuất kết quả của mfile khác hoặc của chính mfile này của lần
chạy trước đó khi chạy chương trình những gì xuất ra tại cửa sổ command
window là của chương trình thuộc mfile đang mở và được chạy sau lệnh clc này.
>>clear all : xóa các biến trước đó.
>>close all : đóng tất cả các cửa sổ hình đã xuất ra trước đó. Vì khi chạy một mfile
nếu có hình ảnh đã xuất ra của lần chạy trước đó, hoặc của mfile khác thì cửa sổ
hình của lần chạy này không tự mở ra mà nằm ẩn bên dưới thanh taskbar của
window. Kết quả của lần chạy này sẽ chồng lên hình cũ. Nếu không có lệnh đóng
cửa số, người viết chương trình không biết hình ảnh xuất ra hiện tại là của lần chạy
nào hoặc của mfile nào.
Ví dụ một cript file mẫu phải có các thông tin như sau:

Việc thực hiện 3 lệnh này trước mỗi chương trình trong Script file giúp ta gỡ lỗi dễ
dàng hơn vì những gì báo lỗi tại command line chắc chắn thuộc Script file này chứ
không phải của file khác hoặc của các lần chạy trước đó.
1.2.5. Hàm (Function)
Hàm trong matlab thường được lưu lại mfile có thể tự chạy hoặc được gọi bởi một
Script file hay command line, tuy nhiên cấu trúc của hàm luôn có dạng:

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

11


DSP Using Matlab

Draft version


function [ output_args ] = function_name( input_args )
%UNTITLED5 Summary of this function goes here
% Detailed explanation goes here
End

Trong đó function_name là tên do ta tự đặt theo kiểu gợi nhớ và không được trùng
lắp với thư viện hàm của Matlab.
Có hai loại hàm:
 Hàm không có đối số
Hàm không có đối số thực hiện chức năng cố định giống mfile
Ví dụ viết hàm thực hiện chức năng vẽ đồ thị hàm Cos:
function vedothi()
%UNTITLED5 Summary of this function goes here
% Detailed explanation goes here
n=1:10;
y=cos(2*pi/10*n);
plot(n,y)
end

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

12


DSP Using Matlab

Draft version

Khi lưu file function Matlab mặc định sẽ lưu vào thư mục hiện hành và bắt buộc tên
lưu cũng chính là tên hàm, nếu lưu tên khác hàm function sẽ không chạyMatlab

báo lỗi.

Hình 1.9: Cách tổ chức hàm
Đặc điểm của hàm không đối số:
 Các biến sẽ không lưu lại ở không gian biến workspace, các biến trong hàm chỉ
có giá trị trong hàm, đó là các biến cục bộ là các biến tạm không sử dụng được
ngoài hàm.
 Thực hiện chức năng cố định không cần đối số
 Có thể có kết quả trả về hoặc không cần có kết quả trả về
 Bản thân hàm tự chạy hoặc được gọi bởi chương trình khác nhưng với điều kiện
hàm và chương trình đó (Script file) phải lưu cùng thư mục hiện hành
 Hàm có đối số
Hàm có đối số có chức năng cố định nhưng đối số sẽ thay đổi
Ví dụ 1.3: Ví dụ hàm thực hiện chức năng tính tổng hàm sin ( chuỗi Fourier)
function xt=sinsum(T,K,bn)
t = 0:0.01:T;
k = 1:bn:K;

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

13


DSP Using Matlab

Draft version

xt=(1./k)*sin(2*pi*k'*t);
end


Chức năng của hàm này tính tổng hàm Sin

( )=

sin(2π )

Trong đó đối số là K, T và bn,
 T: giới hạn khoảng thời gian từ 0 T với chu kỳ lấy mẩu là 0.01s
 K: Giới hạn tần số với bước nhãy là bn (khoảng cách tần số)
 Tất cả các biến là các biến tham chiếu chưa có giá trị thực nên bản thân hàm
không tự chạy được nếu không được gọi với đối số đầu vào.
Nếu nhấn biểu tượng Run (biểu tượng tam giác màu xanh) hàm sẽ báo lỗi không
đối số. Để hàm chạy được, tại command line ta nhập
>> simsum(2,10,2)% chức năng tính tổng hàm sin với tần số từ 010 và trong thời
gian 2s
Muốn tính tổng hàm sin trên với thời gian thay đổi tùy ý, tần số và bước nhãy tùy ý
thì ta không cần thay đổi mã nguồn của hàm (tức chức năng tính tổng hàm sin của
Function sinsum không thay đổi) ta chỉ cần nhập đối số theo yêu cầu là được

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

14


DSP Using Matlab

Draft version

Ví dụ bây giờ ta muốn tính tổng hàm sin trong khoảng thời gian là 10s và bước tần
số kết thúc 15 với bước nhãy là 3 thì ta chỉ cần gọi hàm trong command line như

sau:
>> simsum(10,15,3)

Hình 1.10: Kết quả của hàm sinsum
Hàm có thể gọi nhiều lần trong một Script file với đối số khác nhau, tuy nhiên hàm
và Script file phải nằm trong cùng thư mục hiện hành.
Ví dụ ta viết chương trình lưu lại dạng mfile với chức năng gọi hàm sinsum và vẽ
đồ thì của hàm tổng

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

15


DSP Using Matlab

Draft version

Lúc đó hàm và Scipt file phải nằm cùng thư mục hiện hành như sau

Mở file goisinsum.m và nhấn F5 (run) ta có kết quả như hình dưới
1.5
ham xung vuong tinh duoi dang chuoi Fourier
ham rang cua tinh duoi dang chuoi Fourier
1

0.5

0


-0.5

-1

-1.5

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

1.2.6. Workspace
 Không gian biến được lưu lại ở dạng sheet như Excel hiển thị tất cả các biến

toàn cục đang sử dụng của Matlab.
 Việc quản lý không gian biến tốt giúp người viết chương trình không dùng lại
biến đã dùng trước đó, không dùng quá nhiều biến.
 Không gian biến chỉ được lưu lại khi chạy Script file hoặc các biến nhập từ
command line.

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

16


DSP Using Matlab

Draft version

 Các biến của Matlab được gán trực tiếp và được lưu lại không gian biến theo
kiểu định dạng được nhập mà không cần khai báo như C.
 Biến của matlab sẽ không lưu lại nếu nó là biến trong Function.
Ví dụ ta chạy chương trình vẽ đồ thị sin như sau:

Không gian biến sẽ lưu lại các biến được dùng.

Tuy nhiên khi ta chạy hàm không đối số chương trình vẫn chạy nhưng workspace
không lưu lại biến. Kết quả chạy file vedothi.m như hình 1.11

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

17



DSP Using Matlab

Draft version

Hình 1.11: Hàm không đối số và kết quả trả về
1.2.7. Thế mạnh của Matlab ứng dụng trong DSP
Matlab phần mềm của hãng Matwork có thế mạnh về toán. Nó là môi trường cho
phép mô phỏng tính toán và lập trình và là môi trường gần gũi người dùng nhất.
Nếu chúng ta muốn tính toán mô phỏng, mô hình hóa một vấn đề gì đó thì matlab là
môi trường, là công cụ gần gũi dễ sử dụng và do đó ta dễ dàng thực hiện được
những điều mình muốn. Tuy nhiên khả năng hỗ trợ phần cứng của Matlab kém hơn
ngôn ngữ hướng đối tượng như C nhất là vấn đề thời gian thực, xử lý thích nghi….
Matlab cung cấp sẵn một thư viện hàm đồ sộ với rất nhiều các toolbox của các lĩnh
vực chuyên môn khác nhau. Riêng về lĩnh vực DSP, Matlab có toolbox hỗ trợ là
DSP toolbox với rất nhiều tính năng và hàm hỗ trợ phong phú
 Matrix computations and linear algebra
 Solving nonlinear equations
 Numerical solution of differential equations
 Mathematical optimization
 Statistics and data analysis
 Signal processing
 Modelling of dynamical systems
 Solving partial differential equations
 Simulation of engineering systems

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

18



DSP Using Matlab

Draft version

 ….
Matlab thao tác và xử lý số liệu chủ yếu trên ma trận và véc tơ và đây chính là thế
mạnh của Matlab hơn so với các môi trường khác. Chính vì thế mã nguồn của
Matlab thường gọn và dễ hiểu, rất gần gũi với người dùng.
1.2.8. Nhập mảng với Matlab
Tại command line ta nhập:
>>n=1:10
>> n=1:10
n=
1

2

3

4

5

6

7

8

9


10

>>
 Matlab sẽ hiểu biến n là kiểu số nguyên là một véc tơ có 10 phần tử từ 110
 Matlab không cần phải khai báo biến như C.
So với ngôn ngữ C, C thường gọi biến cấu trúc là mảng một chiều hay mảng nhiều
chiều, ngược lại tất cả các biến kiểu số liệu matlab đều gọi là véc tơ hoặc vô hướng,
so sánh cách nhập mảng với ngôn ngữ C như sau:
main()
{
int i;
int n[10];
for (i=1;i<=10;i++)
n[i]=i;
}
Rõ ràng với hầu như cách viết code theo kiểu control flow như thế này thì mã
nguồn của C rườm rà hơn nhiều so với Matlab. Điều này cũng tương tự khi ta so
sánh C với ngôn ngữ máy (assembler).

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

19


DSP Using Matlab

Draft version

>> n=1:0.01:10 % với cách nhập vecto này ta hiểu n bắt đầu nhận giá trị 1, kết

thúc nhận giá trị 10 và chu kỳ mẫu (hay bước nhãy) là 0.01  Rất thuận tiện và dễ
dàng nhập mảng với các tùy chọn mong muốn.
Nhập mảng tùy ý:
>>n=[1 2 -3 2]
>> n=[1 2 -3 2]
n=
1

2

-3

2

Nhập mảng hai chiều:
>>n=[1 2 3; 4 5 6]
n=[1 2 3; 4 5 6]
n=
1

2

3

4

5

6


Tóm lại: Khi một môi trường lập trình nào gần gũi với người dùng thì nó hơi “xa”
với phần cứng và ngược lại nó gần với phần cứng thì lại rườm rà và phức tạp đối
với người dùng.
1.2.9. Thao tác trên Ma trận
Như đã nói ở trên, Matlab có thế mạnh tính toán trên ma trận và véc tơ , do đó hầu
hết mã nguồn Matlab thường dùng các phép toán trên các biến cấu trúc này và ít
dùng theo kiểu cấu trúc control flow. Để lập trình không bị báo lỗi ta phải nhớ lại
các quy tắc phép toán trên ma trận.
VD: ta có hai ma trận A (kích thước mxn) và B ( kích thước lxk)
Điều kiện để C=AxB tồn tại là n=l và tạo thành ma trận C kích thước mxk

Bộ môn viễn thông-Bài giảng lưu hành nội bộ

20


×