BÁO CÁO: TN TÍN HIỆU HỆ THỐNGLAB 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ủahãng Mathworks để lập trình , tính toán s
Trang 1BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
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ủahã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ớinhiề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.
Trang 2BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
• 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
2
Trang 3BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
• 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 :
Trang 4BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- Đặ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.
• 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ụ :
• 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 :
4
Trang 5BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- 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 :
Trang 6BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- 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àmtạ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 :
• 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 :
6
Trang 7BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- 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 :
• 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:
• title (‘………….’) : chú thích tên đồ thị.
• xlabel ('……….’) : chú thích tên trục x của đồ thị.
• ylabel(‘………') : chú thích tên trục y của đồ thị.
• 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
• subplot (…,….,…): hiện thị vùng muốn vẽ.
• stem (signal): vẽ chuỗi dữ liệu rời rạc.
• angle(x): argument của số phức a
Trang 8BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
• real(x): phần thực của x ;
• imag(x): phần ảo của x
• conj(x): số phức liên hợp của x.
• abs(x) :modun của số phức x.
Trang 9BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
• 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 :
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ầnlặp được xác định trước Cú pháp :
Trang 10BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
1.8 Nhận xét.
- Từ những giới thiệu và một số hướng dẫn cơ bản, ta có thể thấy Matlab là một 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ếtcác phép toán( đặc biệt hỗ trợ tốt ma trận) , các ngôn ngữ lập trình phổ biến hiệnnay như C, C++… và nhiều công cụ 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)
Trang 11BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 12BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 13BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
title('Do thi bai 5: ');
xlabel('truc X ');
ylabel('truc y');
grid on
Kết quả:
Nhận xét: Đồ thị y=exp(x) là 1 đường cong
Bài tập 6: Vẽ đồ thị sin(x) chạy từ -3π tới 3π
Sử dụng 10 điểm trong khoảng này
Sử dụng 100 điểm trong khoản này
Trang 14BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Nhận xét: Khi chia nhiều điểm trên trục X, đồ thị sẽ mượt hơn
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ốcgió trung bình Là áp thấp nếu sức gió dưới 38 mph(miles per hour) Là bão nếu
14
Trang 15BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
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
• 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
Trang 16BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 17BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- 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
- 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
Trang 18BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- 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 :
18
Trang 19BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
3.2.Biến đổi Fourier
Bài tập 2: Tín hiệu x1(t) và x2(t) được miêu tả như sau :
Nhận xét chung :
Ý nghĩa chuổi Fourier: dùng để phân tích được sự phân bố năng lượng của tín hiệu và qua 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ộ lọc thích hợp để lấy đượcnăng lượng của tín hiệu tối ưu nhất
4 Bài tập
Bài tập 1: Có một tín hiệu tuần hoàn x(t) Tính toán và vẽ đồ thị 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à 100, chu kì T0 = , bước nhảy ts=T0/N0 Phổ pha và phổ biên độ của dạng sóng trên
Code:
clc;
Trang 20BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 21BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Đồ thị trong miền thời gian:
Nhận xét: Đồ thị exp(-t/2) là một đường cong có giá trị giảm dần theo thời gian
Phổ biên độ:
Trang 22BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Nhận xét: Biên độ lớn nhất tại điểm f=0, sau đó giảm dần về 2 phía
Phổ pha:
Nhận xét: Tín hiệu ngược pha
Vẽ đồ thị của 2 tín hiệu trên trên miền tần số trong MATLAB
22
Trang 23BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- Yêu cầu : 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 Phổ biên độ và phổ pha của tín hiệu này
Trang 24BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 25BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 26BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Nhận xét:
Đồ thị bằng 0 khi t<-1 và t>1, bằng 1 khi 0< t<1, bằng t+1 khi -1< t<0
Biên độ bằng 0 khi t<-1 và t>1, bằng 1 khi 0<t<1, bằng t+1 khi -1<t<0
Pha ko đổi theo thời gian
Kết quả x2(t):
26
Trang 27BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Nhận xét:
Đồ thị có biên độ bằng 0 khi t<0 và t>2, bằng 1 khi 1<t<2, t+1 khi 0<t<1
Biên độ càng lớn khi t càng xa giá trị 0
Pha thay đổi theo thời gian
Bài tập 3: Chuyển sáng miền tần số cảu các tín hiệu ở đây :
Trang 28BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Vẽ đồ thị của tín hiệu trên miền thời gian và phổ biên độ , phổ pha cảu tín hiệu trong miền tần số trong MABLAT
Yêu cầu : trục x chứa 100 điểm và điểm bắt đầu từ -5 đến 5
Trang 29BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 30BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Trang 31BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Nhận xét:
Đồ thị có giá trị bằng 0 khi t<-3 và t>3, bằng 1 khi -3<=t<=3
Biên độ càng lớn khi dạt ra 2 biên
Pha tăng dần theo thời gian
Kết quả x2(t):
Trang 32BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Nhận xét:
Đồ thị bằng 0 khi t>1 và t<-1, bằng 1 khi -1<=t<=1
Biên độ dao động không đáng kể
Pha tăng dần theo thời gian
LAP 3: XÂY DỰNG TÍN HIỆU VÀ PHÂN TÍCH HỆ
THỐNG
32
Trang 33BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
1 Mục tiêu: Việc tìm hiểu các dạng tín hiệu và phân tích các hệ thống đóng
vai trò quan trọng trong lý thuyết truyền thông Mục đích chính của bài thí
Tín hiệu là một tập hợp thông tin hay dữ liệu, được biểu diễn dưới dạng
hàm của một hay nhiều biến độc lập Tín hiệu có thể được phân loại dựa vào cácđặc điểm khác nhau của nó
- Tín hiệu liên tục và tín hiệu rời rạc
- Tín hiệu biên độ liên tục và tín hiệu lượng tử hóa
- Tín hiệu tuần hoàn và không tuần hoàn
- Tín hiệu nhân quả và phi nhân quả
- Tín hiệu năng lượng và tín hiệu công suất
- Tín hiệu xác định và tín hiệu ngẫu nhiên
Trang 34BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Tín hiệu xung đơn vị
Trang 35BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Với n=40, f1 = 0,02là tần số thấp, f2 =40 là tần số cao (do giáo viên hướng dẫn cho)
THỰC HÀNH VỚI SIMULINK
Simulink chứa thư viện chức năng rất phong phú, bài thí nghiệm này chỉ có thể
đề cập đến những gì gọi là cơ bản nhất Từ đó, sinh viên có thể tự mình nghiêncứu và phát triển tiếp
1.1 Khởi động Simulink
Nhập lệnh:
>>simulink
Hoặc nhấp chuột vào biểu tượng simulink trên menubar của Matlab
Thư viện simulink hiện ra như hình dưới:
Cửa sổ chính của thư viện Simulink
Trước tiên, sinh viên hãy nhấp chuột vào các thanh cuộn của thư viện để cócái nhìn thân thiện về simulink
Từ đây, để có thể tạo mô hình bằng simulink:
ƒ + Nhấp chuột vào biểu tượng New của thư viện simulink
ƒ + Chọn: File – New – Model trong Menu của thư viện Simulink
4
ƒ + Chọn: File – New – Model trong cửa sổ lệnh của Matlab
Trang 36BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
Môi trường soạn thảo của Simulink
1.2 Thao tác trong cửa sổ soạn thảo
Cửa sổ này soạn thảo cho phép ta ‘nhấp - kéo - thả’ vào từng khối chứcnăng trong thư viện simulink
Ví dụ, đặt vào khối ‘Sine Wave’ trong thư viện Simulink Library
Sau khi đặt tất cả các khối cần thiết của mô hình, ta nối chúng lại bằngcách ‘nhấp - giữ’ và kéo một đường từ ngõ ra của khối này đến ngõ vào của
khối khác rồi thả phím trái chuột, một kết nối sẽ được thiết lập
Có 8 thư viện chính của Simulink được phân lọai như sau:
- Continuous : hệ thống tuyến tính và liên tục
- Discrete : hệ thống tuyến tính gián đoạn
- Nonliear : mô hình hóa những phần tử phi tuyến
- Source : các khối nguồn tín hiệu
- Sinks : các khối thu tín hiệu
36
Trang 37BÁO CÁO: TN TÍN HIỆU HỆ THỐNG
- Function & Table : các hàm bậc cao Matlab
- Math : các khối của Simulink và các hàm toán học tương ứng Matlab
- Signals & System : các khối liên hệ tín hiệu, các hệ thống con
Tạo một sơ đồ đơn giản:
Để làm quen với Simulink, ta bắt đầu với một mô hình đơn giản: phân tíchhàm quá độ của một khâu bậc hai với hàm truyền:
,
Xem kết quả bằng cách mở khối Scope như hình:
Mô phỏng hệ thống sau trong Simulink, hàm truyền của hệ hở là