Tải bản đầy đủ (.docx) (48 trang)

Bao cao TN tin hieu he thong 2017 converted

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 (1.99 MB, 48 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
KHOA ĐIỆN TỬ - VIỄN THÔNG
─────── * ───────

PC
2018-12-10 21:04:29

-------------------------------------------jkkk

]ơ]


LAB 1 : MATLAB
1.1.

Giới thiệu về MATLAB
- MATLAB là viết tắt của Matrix Laboratory , là một bộ phần mềm toán học của hãng
Mathworks để lập trình , tính toán số và có tính trực quan rất cao .
- MATLAB làm việc chủ yếu với ma trận . Ma trận cỡ mxn là bảng chữ nhật gồm mxn số
được sắp xếp thành m hàng và n cột. MATLAB có thể làm việc với nhiều kiểu dữ liệu
khác nhau. Với chuỗi kí tự MATLAB cũng xem là một dãy các kí tự hay là dãy mã số của
các ký tự.
- MATLAB dùng để giải quyết các bài toán về giải tích số, xử lý tín hiệu số, xử lý đồ họa,
… mà không phải lập trình cổ điển.
Hiện nay, MATLAB có đến hàng ngàn lệnh và hàm tiện ích. Ngoài các hàm cài sẵn trong
chính ngôn ngữ, MATLAB còn có các lệnh và hàm ứng dụng chuyên biệt trong các
Toolbox, đểmở rộng môi trường MATLAB nhằm giải quyết các bài toán thuộc các phạm
trù riêng. Các Toolbox khá quan trọng và tiện ích cho người dùng như toán sơ cấp, xử lý
tín hiệu số, xử lý ảnh, xử lý âm thanh, ma trận thưa, logic mờ,…
- Giao diện của phần mềm MATLAB khi bắt đầu chạy ứng dụng :


- Một số lệnh phố biến trong MATLAB hỗ trợ người dùng :
 info : hiển thị thông tin liên lạc về sản phẩm.
 demo : hiển thị các tùy chọn phổ biến trong MATLAB.
2


-

-

-

-

 help : trình bày một số câu lệnh ; help help giải thích cách help làm việc
 helpbrowers : mở ra cửa sổ Help Window
 lookfor : tìm kiếm thông qua help cho bởi 1 chuỗi xác đinh.
1.2. Các toán tử
Có 2 loại toán tử cơ bản là toán tử unary(toán tử một ngôi) và binary (toán tử hai
ngôi). Ví dụ kí hiệu “-” được hiểu toán tử một ngôi là giá trị âm và hiểu toán tử hai
ngôi là toán tử trừ .
- Dưới đây là một vài toán tử phổ biến được sử dụng với các biểu thức số học :
+ toán tử cộng
giá trị âm , toán tử trừ
* toán tử nhân
/ toán tử chia lấy tử (9/3 = 3)
\ toán tử chia lấy mẫu (3/12 = 4)
^ toán tử lũy thừa
1.3. Vector và ma trận
Vector và ma trận được sử dụng để lưu tập các giá trị có cùng kiểu dữ liệu . Một vector có

thể là vector hàng hoặc vector cột . Một ma trận có thể được hình thành từ một bảng giá
trị .
Ma trận cỡ mxn là bảng số chữ nhật gồm mxn số được sắp xếp thành m hàng và n cột :
 Nếu m = 1 thì ma trận chuyển thành vector hàng
 Nếu n = 1 thì ma trận chuyển thành vector cột
 Nếu m = n = 1 thì ma trận trở thành đại lượng vô hướng.
Một vector trong MATLAB được coi là mảng 1 chiều trong các ngôn ngữ khác. Một ma
trận được coi là mảng 2 chiều . Vì vậy trong MATLAB , thực hiện toán tử với vector và
ma trận thì được coi là các toán tử mảng .
1.3.1. Tạo vector hàng
Có nhiều cách tạo biến vector hàng . Cách trực tiếp nhất là đặt các giá trị bạn muốn vào
trong dấu ngoặc vuông , và được phân cách bởi dấu cách hoặc dấu phẩy . Ví dụ :

Sử dụng colon operator (toán tử : ) lấy từng giá trị trong khoảng xác định. Ví dụ :


- Chú ý trong trường hợp này , cặp [] là không cần thiết để định nghĩa vector.
Với colon operator , một giá trị bước nhảy có thể xác định với 1 dấu 2 chấm khác , theo
mẫu sau (giá trị đầu : bước nhảy : giá trị cuối) . Ví dụ :

- Tương tự hàm linspace tạo ra 1 vector có n giá trị từ x đến y . Ví dụ tạo ra vector với 5
giá trị nằm cách đều trong khoảng từ 3 đến 15 :

- Biến vector cũng có thể được tạo dựa trên các biến có sẵn . Ví dụ tạo một vector mới
chứa 2 vector đã tạo ở trên :

- Đặt 2 vector cùng nhau giống như tạo một vector mới được gọi là concatenating (nối
ghép) vector.
1.3.2. Tạo vector cột
- Để tạo vector cột , ta đặt các giá trị cần truyền vào trong cặp dấu ngoặc vuông và phân

cách bởi dấu chấm phẩy (;) :

- Không thể sử dụng colon operator để tạo ra vector cột . Tuy nhiên có một cách khác là
chuyển hàng thành cột để tạo ra vector theo ý . Ví dụ :


1.3.3. Tạo biến ma trận
- Việc tạo biến ma trận thực chất là kết hợp biến vector hàng và cột lại với nhau . Ví dụ
biến mat được tạo bởi các giá trị cho trước :

- Yêu cầu để tạo ma trận là số giá trị trên các hàng phải bằng nhau . Nếu khác thì sẽ hiển
thị một thông báo lỗi , ví dụ :

- Chúng ta có thể có thể tạo ma trận dựa trên colon operator cho các hàng . Ví dụ :

- Một cách khác để tạo ma trận không cần sử dụng dấu chấm phẩy để kết thúc một hàng là
nhấn phím Enter sau mỗi hàng. Ví dụ :

- Ma trận với các số ngẫu nhiên được tạo bằng cách sử dụng hàm rund và randint . Hai đối
số đầu tiên trong hàm randint xác định số hàng và cột của ma trận . Đối số cuối xác


định các giá trị ngẫu nhiên của ma trận nằm trong khoảng nào . Ví dụ tạo ma trận 2x4 với
các giá trị nằm trong khoảng 10 đến 30 :

- Đối với hàm rand , nếu truyền vào hàm 1 giá trị n thì ma trận nxn sẽ được tạo với các giá
trị ngẫu nhiên kiểu số thực :

- Truyền vào 2 giá trị m, n thì ma trận mxn với các giá trị ngẫu nhiên số thực sẽ được tạo
:


- MATLAB cũng cung cấp các hàm để tạo ra các ma trận đặc biệt . Ví dụ là hàm tạo ma
trận với các giá trị 0 . Nếu truyền 1 đối số n thì ma trận nxn được tạo , 2 đối số m, n thì
ma trận mxn được tạo :

Bài tập 1: Tạo biến ftemp để lưu nhiệt độ F, chuyển đổi thành độ C và lưu vào biến
ctemp theo công thức: C=(F-32)*5/9
Code:


Kết quả:

Bài tập 2: Sử dụng toán tử “:” tạo những vector sau:
Code:

Kết quả:

Bài tập 3: Sử dụng hàm linspace, tạo những vector sau:
Code:


Kết quả:

Bài tập 4: Sử dụng toán tử “:” tạo ma trận như sau:
Code:

Kết quả:

1.4. MATLAB scripts
- Một script chứa các mã viết bằng MATLAB được lưu trữ trong một file. Nội dung trong

script được hiển thị trên cửa sổ Command Window . Script được thực thi hoặc chạy bằng
cách nhập vào tên file không chứa đuôi mở rộng.
- Quy tắc của tên file giống như cho biến : bắt đầu bằng một chữ cái , sau đó có thể là chữ
cái , chữ số hoặc kí tự đặc biệt.
- File script mặc định được lưu trong Work Directory. Ví dụ , ta tạo 1 file script1.m để tính
diện tích hình tròn. Ta viết mã vào script1.m như sau:

- Sau khi lưu lại file, muốn hiển thị nội dung ra Command Window ta sử dụng lệnh type :

- Để chạy đoạn mã này , ta chỉ cần gõ tên của file script ra Command Window :


1.5. Plot và Subplot
- Lệnh plot trong MATLAB cho phép vẽ đồ thị từ dữ liệu là vector. Ví dụ nếu có biến t là
thời gian và y là tín hiệu , gõ lệnh plot(t,y); lập tức xuất hiện giao diện đồ thị của t và y.
Các hàm phổ biến cho plot:
o title (‘………….’) : chú thích tên đồ thị.
o xlabel ('……….’) : chú thích tên trục x của đồ thị.
o ylabel(‘………') : chú thích tên trục y của đồ thị.
o grid on : hiển thị lưới các ô vuông.
- Để hiển thị nhiều đồ thị trên một màn hình , sử dụng hàm subplot. Hàm này gồm 3 đối số
(m,n,p) , m và n chia màn hình ra thành m hàng và n cột . Đối số p xác định đồ thị nào
xuất hiện trước .
o subplot (…,….,…): hiện thị vùng muốn vẽ.
o stem (signal): vẽ chuỗi dữ liệu rời rạc.
o angle(x): argument của số phức a.
o real(x): phần thực của x ;
o imag(x): phần ảo của x.
o conj(x): số phức liên hợp của x.
o abs(x) :modun của số phức x.

Bài tập 5: Vẽ đồ thị exp(x) với x chạy từ -2 đến 2 , bước nhảy là 0,1 .Đặt title , và label
cho trục.
Code :

8


Kết quả:

Bài tập 6: Vẽ đồ thị sin(x) với x chạy từ 0 đến 10 :
 Sử dụng 10 điểm trong khoảng này.
 Sử dụng 100 điểm trong khoảng này.
Code:

1
0


Kết quả:

11


1.6. Câu lệnh lựa chọn
1.6.1. Biểu thức quan hệ. Các toán tử quan hệ trong MATLAB là :
Toán tử
Định nghĩa
>
Lớn hơn
<

Nhỏ hơn
>=
Lớn hơn hoặc bằng
<=
Nhỏ hơn hoặc bằng
==
Bằng
~=
Không bằng
Các toán tử Logic :
Toán tử
Định nghĩa
||
Hoặc
&&

~
Không
1.6.2. Câu lệnh IF Câu lệnh if xác định 1 điều kiện hoặc 1 nhóm điều kiện xảy ra thì
cho phép thực hiện các câu lệnh . Cú pháp :

1.6.3 Câu lệnh IF-ELSE và SWITCH Câu lệnh if-else sử dụng để lựa chọn giữa 2
điều kiện. Cú pháp :

Câu lệnh switch được sử dụng để thay thế lệnh if-else lồng nhau . Cú pháp :

Bài tập 7: Một cơn bão là áp thấp , bão hoặc siêu bão được xác định bởi vận tốc gió trung
bình . Là áp thấp nếu sức gió dưới 38 mph(miles per hour). Là bão nếu sức gió từ 39 đến



63 mph. Là siêu bão nếu sức gió trên 74 mph. Viết script cho phép người dùng nhập sức
gió và hiển thị ra loại bão .
Code:

Kết quả:

1.7. Vòng lặp FOR
Vòng lặp for được sử dụng khi cần lặp lại 1 biểu thức nào đó dựa theo số lần cần lặp
được xác định trước. Cú pháp :

Bài tập 8: Tạo một ma trận 3x5 . Thực hiện các yêu cầu dưới theo 2 cách : sử dụng hàm
có sẵn và sử dụng vòng lặp.
 Tìm giá trị lớn nhất trong mỗi cột.
 Tìm giá trị lớn nhất trong mỗi hàng.
 Tìm giá trị lớn nhất trong cả ma trận.


Cách 1: dùng hàm có sẵn
Code:

Kết quả:

Cách 2: Dùng vòng for (sử dụng câu lệnh if nếu cần thiết)
Code:


14


Kết quả:


và môṭ số hướ ng
1.8 Nhâṇ xet́ .
- Từ những giới thiêu dân

cơ bản, ta có thể thấy Matlab là môṭ phần mềm

với một môi trường tính toán số và lập trình mạnh mẽ. Hổ trợ hầu hết các phép toán( đăc
biệt hỗ trơ ̣ tố t ma trâṇ ) , cá c ngôn ngữ lập trıǹ h phổ biế n hiên nay như C, C++… và
nhiề u
công cu ̣khác cho những lĩnh vưc̣ , ngành khác nhau (xử lý tín hiệu số, xử lý đồ họa).

16


LAB 2 : Chuỗi Fourier & Biến Đổi Fourier
1. Mục tiêu
- Việc phân tích Fourier đóng vai trò quan trọng trong lý thuyết truyền thông. Mục đích
chính của bài thí nghiệm này là :
 Hiểu và thực hành tốt với chuỗi Fourier, kĩ thuật biến đổi Fourier và ứng
dụng của nó trong lý thuyết truyền thông.
 Học được cách triển khai kĩ thuật phân tích Fourier bằng MATLAB.
2. Giới thiệu
2.1. Chuỗi Fourier
- Chuỗi Fourier (được đặt tên theo nhà toán học Joseph Fourier) của một hàm tuần hoàn là
một cách biểu diễn hàm đó dưới dạng tổng của các hàm tuần hoàn có dạng ejnx .
Chuỗi Fourier là việc mở rộng trực giao của tín hiệu tuần hoàn với chu kì T0.Tín hiệu tuần
hoàn x(t) với chu kì T0 có thể được biểu diễn như sau :

- Với xn được gọi là hệ số Fourier của tín hiệu x(t). Hệ số xn được tính như sau :


- Loại chuỗi Fourier này được gọi chuỗi Fourier hàm mũ. Tần số f0=1/T0 được gọi là tần số
cơ bản của tín hiệu. Sóng thứ n có tần số fn=nf0.
Nếu x(t) là tín hiệu tuần hoàn giá trị thực thì tính chất liên hợp phức được thỏa mãn. Điều
này có nghĩa x-n=xn* với * là biểu thị của liên hợp phức. Ta có thể tính được hệ số âm
bằng cách lấy liên hợp phức của hệ số dương. Dựa theo kết quả này , ta có thể thấy được
:

2.2. Biến đổi Fourier
- Biến đổi Fourier là việc mở rộng của chuỗi Fourier cho một tín hiệu bất kì. Biến đổi
Fourier của tín hiệu x(t) , kí hiệu là X(f) được định nghĩa :

- Ngược lại , biến đổi Fourier ngược được định nghĩa :

- Nếu x(t) là tín hiệu thực thì X(f) thỏa mãn tính chất liên hợp phức :


3. Lab work
3.1. Chuỗi Fourier
- Các hàm hữu ích trong MATLAB :
 exp(n) : hàm e mũ n
 fft(x,N0) : hàm biến đổi fourier nhanh của tín hiệu x
 length(): tính độ dài của ma trận hoặc vector
 conj : tính liên hợp phức của một số
 abs(x) : lấy giá trị tuyệt đối của x nếu x là số thực , lấy độ lớn của x nếu x là
số phức
 angle: tính pha theo radian của ma trận với các phần tử phức
 stem: vẽ tín hiệu rời rạc
 figure : đặt tên cho form
- Code minh họa dưới đây trình này cách sử dụng hàm fft để áp dụng đối với hệ số

Fourier lớn :

Bài tập 1: Có một tín hiệu tuần hoàn x(t). Tính toán và vẽ phổ biên độ và phổ pha của tín
hiệu x(t) = e-t/2 với t [0,]. Sử dụng hàm biến đổi Fourier nhanh (FFT) trong MATLAB.
Triển khai tín hiệu x(t) với số lượng sóng N0 cần sử dụng là 32, chu kì T0 =  , bước
nhảy ts=T0/N0. Vẽ đồ thị trên miền thời gian ở cửa sổ thứ nhất, trên cửa sổ thứ hai vẽ phổ
biên độ và pha của tín hiệu, đặt title và label trong các đồ thị.
Code:

17


Kết quả:

19


3.2. Biến đổi Fourier
- Tín hiệu x1(t) và x2(t) được miêu tả như sau :

Bài tập 2: Vẽ luôn tín hiệu trên miền thời gian. Trục x chứa 100 điểm và điểm bắt đầu là 5 đến 5. Vẽ đồ thị của 2 tín hiệu trên trên miền tần số trong MATLAB.
Code:


20


Kết quả:

Kết luận: Khi dịch đồ thị tín hiệu trên miền thời gian thì phổ biên độ trên miền tần số

không đổi còn phổ pha thì thay đổi.
Khi dịch thời gian trên miền thời gian thì sẽ dịch chuyển pha trên miền tần số.
Chú ý: Tương tự như chuỗi Fourier, tính toán biến đổi Fourier trong MATLAB được thực
hiện dễ dàng bằng chức năng FFT. Thông báo đặc biệt là chức năng fftshift rất hữu ích
cho việc trình bày phổ Fourier ở một định dạng dễ hiểu. Thuật toán nội bộ được sử dụng
trong MATLAB để tìm các điểm FFT lan truyền các điểm tín hiệu trong miền tần số tại
các cạnh của khu vực vẽ, và chức năng fftshift trung tâm các lô tần số trở lại xung quanh
nguồn gốc.
Bài tập 3: Chuyển sang miền tần số của các tín hiệu dưới đây :

22


Code:



Kết quả:

Kết luận:
Khi nén hoặc giản tín hiệu trên miền thời gian thì phổ biên độ và pha trên mần tần số thay
đổi.
Khi nén trên miền thời gian thì giản trên miền tần số.
Khi giản trên miền thời gian thì nén trên miền tần số.
Nhận xét:
biểu
- Biến đổi Fourier là phân tích các hê ṭ hống hoăc diên
sang miền tần số hoăc ngươ lại.
c
-Ý nghĩa chuổi Fourier: dùng để phân tích

đươc

cać hê ̣thống từ miền thơì gian

g cuả tıń
và qua
sự phân bố năng
lươn
hiêu
phân tı́ch phổ thı̀ ta biết đươc năng lượng tập trung chủ yếu ở tần số thấp. Từ đó có thể đưa
ra các phương pháp thiết kế bộ loc thı́ch
để lấy đươc năng
g của tı́n hiêu tối ưu
lươn
nhất.
hơp


×