Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 88 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
88
Dung lượng
3,66 MB
Nội dung
Giáo trình Xử lý tín hiệu nâng cao Chương 1. TỔNG QUAN VỀ CÔNG CỤ MATLAB 6 1.1. Giới thiệu 6 1.2. Sử dụng biến trong matlab 7 1.2.1. Quy cách đặt tên 7 1.2.2. Véc tơ và matrận 7 1.3. Một số lệnh thông dụng trong Matlab 10 1.4. Các toán tử và hàm 11 1.4.1. Các toán tử và các hàm cơ bản 11 1.4.2. Các toán tử và các hàm thao tác với ma trận 11 1.5. Sử dụng đồ thị trong Matlab 13 1.5.1. Đồ thị trong hệ tọa độ phẳng 13 1.5.2. Đồ thị trong không gian ba chiều 15 1.6. Lập trình trong Matlab 17 1.7. Matlab GUI 18 1.7.1. Môi trường làm việc 18 1.7.2. Thuộc tính của các điều khiển 19 1.7.3. Viết sự kiện cho các điều khiển 20 1.7.4. Debug trong Matlab 21 1.7.5. Vẽ đồ thị - sử dụng component AXES 21 1.7.6. Điều khiển Toggle – nút bấm 2 trạng thái 22 1.7.7. Điều khiển Slider – thanh trượt 22 1.8. Bài tập chương 1 22 Chương 2. TÍN HIỆU RỜI RẠC 24 2.1. Khái niệm về tín hiệu rời rạc và lấy mẫu tín hiệu 24 2.2. Các tín hiệu cơ sở 24 2.2.1. Dãy xung đơn vị 24 2.2.2. Dãy nhảy bậc đơn vị 25 2.2.3. Dãy tín hiệu hình sin 27 2.2.4. Dãy e-mũ phức 28 2.3. Các phép toán trên tín hiệu 29 2.3.1. Phép dịch chuyển 29 2.3.2. Phép nhân, cộng tín hiệu 30 2.3.3. Phép nhân chập 2 tín hiệu 31 2.4. Phương trình sai phân hệ số hằng 31 2.5. Tín hiệu hai chiều (ảnh số) 32 2.5.1. Biểu diễn ảnh 32 2.5.2. Đọc ảnh, hiển thị và lưu ảnh 33 2.5.3. Cải thiện sự tương phản của ảnh 35 2.5.4. Tạo ảnh nhị phân từ ảnh đã cho 36 2.6. Bài tập chương 2 36 Chương 3. PHÉP BIẾN ĐỔI FOURIER 39 3.1. Biến đổi Fourier của tín hiệu rời rạc 39 3.1.1. Định nghĩa 39 3.1.2. Các phương pháp thể hiện của X(ejω) 40 3.1.3. Tính chất quan trọng của X(ejω): 41 3.2. Các tính chất của biến đổi Fourier 43 3.2.1. Tuyến tính 43 3.2.2. Tính chất trễ 44 3.2.3. Trễ tần số 44 3.2.4. Liên hợp phức 46 3.2.5. Nhân chập 46 3.2.6. Tích đại số 46 3.3. Phép biến đổi Fourier nhanh 46 3.4. Biểu diễn hệ thống rời rạc trong miền tần số liên tục 48 3.4.1. Đáp ứng tần số 48 3.4.2. Các bộ lọc số lý tưởng 50 3.5. Phép biến đổi Fourier của tín hiệu hai chiều 53 3.5.1. Phép biến đổi Fourier 53 3.5.2. Phép lọc trên miền tần số 56 3.6. Bài tập chương 3 58 Chương 4. BIỂU DIỄN HỆ THỐNG VÀ TÍN HIỆU RỜI RẠC TRONG MIỀN Z 61 4.1. Phép biến rổi Z hai phía 61 4.2. Một số tính chất của biến đổi Z 62 4.2.1. Tính tuyến tính 62 4.2.2. Dịch mẫu – tính chất trễ 62 4.2.3. Dịch tần số 63 4.2.4. Biến số đảo 63 4.2.5. Liên hợp phức 63 4.2.6. Tích của hai dãy 63 4.2.7. Tích chập của hai dãy 63 4.3. Biến đổi Z của một số dãy cơ bản 64 4.4. Biến đổi Z ngược 64 4.5. Hàm truyền đạt của hệ thống rời rạc 67 4.6. Bài tập chương 4 69 4.6.1. Bài tập sinh viên tự giải 70 Chương 5. BỘ LỌC SỐ 72 5.1. Phân tích các mạnh lọc FIR đơn giản 72 5.1.1. Mạch lọc FIR thông thấp 72 5.1.2. Mạch lọc FIR thông cao 74 5.2. Mạch lọc số IIR 75 5.2.1. Mạch lọc IIR thông thấp 75 5.2.2. Mạch lọc IIR thông cao 76 5.2.3. Mạch lọc IIR thông dải 77 5.2.4. Mạch lọc IIR chặn dải 78 Chương 6. XỬ LÝ ẢNH TRONG MATLAB 79 6.1. Nâng cao chất lượng ảnh bằng xử lý histogram 79 6.1.1. Phép dãn Histogram sử dụng imtool của Matlab 79 6.1.2. San phẳng (cân bằng) histogram 80 6.2. Phép lọc ảnh trên miền không gian 81 6.2.1. Phép lọc tuyến tính 81 6.2.2. Lọc phi tuyến 84 6.2.3. Khôi phục ảnh 87 6.3. Tách biên ảnh 88 Chương 1. TỔNG QUAN VỀ CÔNG CỤ MATLAB 1.1. Giới thiệu MatLab (Matrix Laboratory) là một ngôn ngữ lập trình cấp cao dạng thông dịch, được phát triển bởi MathWorks. Matlab được ứng dụng để giải quyết các bài toán khác nhau đặt biệt là các hệ phương trình tuyến tính, phi tuyến và đặc biệt là các bài toán ma trận với kết quả nhanh chóng và chính xác. Matlab là một công cụ mạnh và đáp ứng được cho nhiều lĩnh vựng đa dạng như các ngành về kỹ thuật như điện, điện tử, vật lý, hóa học v.v cho đến các ngành về kinh tế như thống kê, kế toán v.v Cửa sổ chính làm việc trong Matlab bao gồm 3 cửa sổ chính là: Cửa sổ lệnh (Command Window), cửa sổ thư mục – vùng làm việc (Current Directory – Workspace) và cửa sổ chứa tập lệnh đã được sử dụng (Command History) Matlab cho phép tính toán số, tính toán ma trận, vẽ đồ thị hàm số để biểu diễn thông tin dưới dạng 2D hay 3D. Matlab chứa các toolbox, các gói chương trình (thư viện) sử dụng cho các lĩnh vực rất đa dạng như: xử lý tín hiệu, nhận dạng hệ thống, xử lý ảnh, mạng nơron, tối ưu hóa v.v… Matlab có thể giao tiếp với các chương trình và các và các ngôn ngữ khác. Matlab có thể gọi các hàm được viết bằng C hay Java. 1.2. Sử dụng biến trong matlab 1.2.1. Quy cách đặt tên Cũng giống như trong các ngôn ngữ lập trình khác, Matlab có những quy định riêng về cách đặt tên biến: • Tên biến phải là một từ, không chưa dấu cách, tên biến tối đa là 31 ký tự • Tên biến phân biệt chữ hoa và chữ thường • Tên biến bắt đầu bằng chữ cái • Ký tự dấu chấm “.” không được sử dụng để trong đặt tên biến. Trong Matlab có những biến đặc biệt trong bảng sau: Các biến đặc biệt Giá trị ans Biến mặc định trả về kết quả pi số pi esp Số nhỏ nhất lớn hơn 0 inf Để chỉ số vô cùng NaN hoặc nan Để chỉ số ko xác định như kết quả của 0/0 i và j Số phức, i=j=sqrt(-1) realmin Số dấu chấm động nhỏ nhất (2 -1022 = 2.2251e-308) realmax Số dấu chấm động lớn nhất (2 1024 = 1.7977e+308) 1.2.2. Véc tơ và matrận Các bài toán trong Matlab thông thường được quy về việc tính toán và xử lý trên ma trận. Các biến, dữ liệu trong Matlab được coi như một ma trận thực hoặc phức. Ví dụ, một giá trị vô hướng được coi là một mà trận có kích thước 1x1, một vector cột là một chỉ có 1 cột, một véc tơ hàng, hay một chuỗi số là một ma trận chỉ có một hàng. Một ma trận có kích thước (m x n) trong Matlab là một ma trận có m hàng và n cột. Ví dụ, tạo một ma trận trong Matlab: >> M=[3 4 5 ; 2 1 4] M = 3 4 5 2 1 4 Như vậy giá trị nhập đã được gán cho các thành phần của ma trận, các phần tử trong mỗi cột được cách nhau bằng một dấu cách (space) hoặc một dấu phảy, Các hàng được cách nhau bằng dấu “;”. Về cách đánh chỉ số, trong Matlab, các phần tử được đánh chỉ số từ 1. Xét trong ví dụ trên: >> M(1,1) ans = 3 >> M(2,3) ans = 4 Xâu ký tự cúng có thể được gán vào phần tử của ma trận, tuy nhiên số ký tự trên mỗi hàng phải bằng nhau Ví dụ: >> M=['John','Peter';'David','Joe'] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. Ví dụ: >> M=['John','pete21';'adam3','ever4'] M = Johnpete21 adam3ever4 M sẽ là một ma trận chứa ký tự của 2 xâu, và các phần tử ma trận sẽ là các ký tự của 2 xâu đó. Ví dụ: >> M(1,1) ans = J >> M(2,2) ans = e Trong trường hợp chúng ta muốn tạo một vector, trong đó các giá trị cách đều nhau ví dụ (1,2,3,4,5,6…20) chúng ta có thể sử dụng công thức: M=(start:step:end) Ví dụ: >> M=(1:2:10) M = 1 3 5 7 9 Trong trường hợp step=1, ta có thể sử dụng công thức thu gọn: M=(start:end) Ví dụ: >> M=[1:3;4:6] M = 1 2 3 4 5 6 Kích thước của ma trận cũng có thể thay đổi, xét trong ví dụ trên nếu ta gán M(3,3)=1, ta sẽ có: >> M(3,3)=1 M = 1 2 3 4 5 6 0 0 1 Tương tự ma trận có thể mở rộng kích thước bằng cách gộp các ma trận lại. Ví dụ: >> N=ones(3) N = 1 1 1 1 1 1 1 1 1 >> M=[M,N] M = 1 2 3 1 1 1 4 5 6 1 1 1 0 0 1 1 1 1 Hoặc: >> M=[M;N] M = 1 2 3 4 5 6 0 0 2 1 1 1 1 1 1 1 1 1 1.3. Một số lệnh thông dụng trong Matlab • clc: Xóa màn hình cửa sổ lệnh • who: xem tên biến trong không gian làm việc của Matlab Ví dụ: >> who Your variables are: A M N • whos: xem chi tiết hơn về các biến Ví dụ: >> whos Name Size Bytes Class A 1x10 80 double array [...]... sin(x*x)');xlabel('X');ylabel('Y'); Bài 4 Viết chương trình trong Matlab có nút bấm, để vẽ đồ thị Chương 2 TÍN HIỆU RỜI RẠC 2.1 Khái niệm về tín hiệu rời rạc và lấy mẫu tín hiệu Tín hiệu là biểu diễn vật lý của thông tin, tín hiệu nhìn thấy là các sóng ánh sáng mang thông tin tới mắt, các tín hiệu nghe thấy là sự biến đổi áp suất không khí truyền thới tai chúng ta Về mặt toán học tín hiệu biểu diễn bởi một hàm của một... độc lập Trong lĩnh vực xử lý tín hiệu số, chỉ làm việc với các tín hiệu rời rạc Trong DPS, tín hiệu thời gian rời rạc, được biểu thị bằng một dãy rời rạc và được viết như sau: x[n]={-3 , 2, 4, -4, 0, 1…} với n là số nguyên Tín hiệu tương tự ở đầu vào được chuyển sang dạng số nhờ một hệ biến đổi tương tự - số Quá trình rời rạc hóa còn gọi là quá trình lấy mẫu tín hiệu 2.2 Các tín hiệu cơ sở 2.2.1 Dãy... +ϕ ) ω là tần số của tín hiệu, ϕ được gọi là pha Với công thức trên ta nhận thấy đối với đối với tín hiệu e-mũ phức tuần hoàn, chỉ cần xét các tần số trong khoảng dài 2π Trong miền tín hiệu rời rạc, tín hiệu e-mũ phức sẽ lặp lại với chu kỳ 2π/ω Xét trong ví dụ trên: trong khoảng N=2π/0.1π=20 tín hiệu sẽ được lặp lại, tức là x[n]=x[n+20] 2.3 Các phép toán trên tín hiệu Xử lý tín hiệu số là sử dụng các... [y,n]=sigshift(x,m,5); subplot(211);stem(m,x) subplot(212);stem(n,y) 2.3.2 Phép nhân, cộng tín hiệu Phép nhân tín hiệu gồm có: nhân tín hiệu với hằng số và nhân hai tín hiệu Nhân tín hiệu với hằng số ta sử dụng phép nhân thông thường *, đối với nhân hai tín hiệu, trong Matlab thực hiện toán tử mảng *, tuy nhiên để nhân 2 tín hiệu sử dụng toán tử trên, thì 2 ma trận phải có cùng kích thước, vì vậy trong trường... là sử dụng các phép toán tác động lên tín hiệu lối vào để tạo ra một tín hiệu ra Về mặt công thức, ta sử dụng một hàm F, tác động lên tín hiệu đầu vào để được tín hiệu ở đầu ra y[n]=F(x[n]) Trong DSP, các phép toán cơ sở sau đây được sử dụng khá phổ biến: 2.3.1 Phép dịch chuyển Phép toán này làm tín hiệu bị dịch đi một lượng bằng k đơn vị trên trục thời gian, tín hiệu có thể bị làm trễ hoặc làm sớm Tức... tượng trong ảnh bw 2.6 Bài tập chương 2 Bài 1 Biểu diễn các tín hiệu sau trong Matlab, và vẽ đồ thị biểu diễn tín hiệu x(n) = (0.5) n cos(2π n + π ) x(n) = 5cos(2π n + π ) + 3 Bài 5 Cho tín hiệu x1(n) = {5,6,3,6,8,3}, hãy xác định các tín hiệu sau: a x(-n) b x(-n+1) c 2x(-n+1) d x(-n)+x(-n+1) e x(n/2) f x(2n – 1) g x(n)x(n) Bài 6 Biểu diễn tín hiệu sau đây trong Matlab và vẽ đồ thị a x1(n) = {5,6,3,6,8,3}... với phép cộng 2.3.3 Phép nhân chập 2 tín hiệu Hai tín hiệu x[n] và h[n] nhân chập với nhau thành một tín hiệu mới y[n] và được cho bởi công thức: +∞ k = −∞ y[n] = h[n] ⊗ x[n] = +∞ k = −∞ ∑ x[k ]h[n − k ] = ∑ h[k ]x[n − k ] Trong Matlab không thể nhân chập hai tín hiệu có chiều dài vô hạn Matlab sử dụng hàm conv để nhân chập 2 dãy có chiều dài hữu hạn 2.4 Phương trình sai phân hệ số hằng Ta có với kích... x=[(n-n0)>=0]; Thực hành: Ví dụ: vẽ đồ thị tín hiệu: x[n]=2*δ[n-5]-4*δ[n+7] trên đoạn [0:10] n=[-10:10] x=2*impseq(5,-10,10)-4*impseq(-7,-10,10) stem(n,x); Kết quả: Ví dụ vẽ đồ thị tín hiệu rời rạc: x[ n] = e −0.3( n −10 ) { u ( n − 10 ) − u ( n − 20 )} trên đoạn [0:20] x=exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20)); stem(n,x) Kết quả: 2.2.3 Dãy tín hiệu hình sin Dãy tín hiệu hình sin được biểu thị bằng... viết xong chương trình hoàn chỉnh, để chạy chương trình có thể bấm nút Play trên thanh công cụ hoặc F5 trong cửa sổ lập trình Trong trường hợp muốn debug chương trình, ta đặt breakpoint bằng phím F12, rồi chạy chương trình, khi đó tại cửa sổ lệnh của Matlab con trước con trỏ để gõ lệnh sẽ trở thành K>> Muốn chuyển sang lệnh tiếp theo sử dụng phím tắt F10 Trong quá trình viết chương trình, có thể in... Trong Matlab, hàm sin (hoặc cos) được sử dụng để tạo ra dãy tín hiệu này πn π πn π − − sin + trên đoạn [0:50] 10 2 20 2 Ví dụ tạo dãy tín hiệu: x[ n] = 2 cos n=[0:50]; x=2*cos(pi*n/10-pi/2)-sin(pi*n/20+pi/2); stem(n,x); Kết quả: πn π πn π − − sin + (trong ví dụ trên) bị ảnh hưởng bởi 10 2 20 2 Ví dụ tín hiệu x[ n] = 2 cos nhiễu Gauss: y[n]=x[n]+0.2*w[n] n=[0:50]; . 22 Chương 2. TÍN HIỆU RỜI RẠC 24 2.1. Khái niệm về tín hiệu rời rạc và lấy mẫu tín hiệu 24 2.2. Các tín hiệu cơ sở 24 2.2.1. Dãy xung đơn vị 24 2.2.2. Dãy nhảy bậc đơn vị 25 2.2.3. Dãy tín hiệu hình. Giáo trình Xử lý tín hiệu nâng cao Chương 1. TỔNG QUAN VỀ CÔNG CỤ MATLAB 6 1.1. Giới thiệu 6 1.2. Sử dụng biến trong matlab 7 1.2.1. Quy cách. phép toán trên tín hiệu 29 2.3.1. Phép dịch chuyển 29 2.3.2. Phép nhân, cộng tín hiệu 30 2.3.3. Phép nhân chập 2 tín hiệu 31 2.4. Phương trình sai phân hệ số hằng 31 2.5. Tín hiệu hai chiều (ảnh