MỞ ĐẦU • • • • Xử lý số tín hiệu môn học nghiên cứu phương trình toán học, giải thuật t ính toán dựa phương pháp tính gần cho tín hiệu hệ thống rời rạc Nội dung môn học Xử lý số tín hiệu giảng dạy Khoa Điện tử - Viễn thông trường Đại học bách khoa Hà nội, chịu trách nhiệm môn Mạch Xử lý tín hiệu, tập trung vào bao trùm vấn đề sau: Phân tích tín hiệu hệ thống Thiết kế lọc Phương pháp học tốt để sinh viên hiểu, nhớ, yận dụng tự đánh giá kiến thức lý thuyết trực tiếp bắt tay vào giải tập Để hỗ trợ thêm cho việc nhìn nhận vấn đề cách trực quan, đồng thời giúp sinh viên hiểu sâu lý thuyết môn học, biên soạn phần thực hành Phần thực hành bao gồm phần lớn: phân tích tín hiệu số thiết kế hệ thống xử lý tín hiệu số bàng MATLAB; làm quen với công việc thực phát triển hệ thống xử lý số tín hiệu xử lý tín hiệu số với tên gọi Digital Signal Processor - DSP Hiện có nhiều công cụ phần mềm tiện ích mạnh để hỗ trợ tính toán Hai số MATHCAD Mathsoft MATLAB MathWorks Chúng gói phần mềm dễ dàng kiếm Việt Nam vào thời điểm Ngoài ra, gói phần mềm MATHEMATICA Wolfram giới khoa học kỹ thuật giới ưa dùng Khả tính toán dựa phương pháp tính gần điểm mạnh phần mềm Phần mềm MATHCAD có đặc điểm hiển thị kết tính toán sau người dùng trực tiếp đánh công thức vào giao diện người sử dụng Tuy nhiên sử dụng phần mềm có khó khăn người dùng muốn đóng gói kế thừa tái sử dụng thiết kế trước điểm phần mềm MATLAB tương đối mạnh, cho phép người dùng thiết kế phần mềm thông qua câu lệnh, dễ dàng môđun hoá dạng kịch hàm để sử dụng, phát triển qua trình thiết kế toán thiết kế khác Vì lý đó, MATLAB lựa chọn cho phần thí nghiệm Tốc độ xử lý nhanh DSP tính linh hoạt hỗ trợ đầy đủ phần mềm phát triển, dùng để khởi tạo đề án, viết chương trình nguồn, gỡ rối tối ưu hoá chương trình, Texas Instrument (TI) làm số lượng lớn nhà nghiên cứu phát triển xử lý tín hiệu số lựa chọn DSP TI công cụ dùng để nghiên cứu phát triển sản phẩm Bằng chứng thể tăng trưởng số tiêu thụ sản phẩm thị phần DSP TI đăng tạp chí chuyên ngành Tốc độ xử lý DSP cải thiện không ngừng, tổ chức thí nghiệm, thí nghiệm Xử lý số tín hiệu chia làm bài: Bài 1: Mô hệ thống túi hiệu rời rạc MATLAB Bài 2: Thiết kế lọc số MATLAB Đánh giá kết thực hành dựa hai tiêu chí: phần thực hành hoàn thành trả lời câu hỏi đặt giáo viên hướng dẫn thí nghiệm Sau buổi thực hành, nhóm sinh viên cần nộp báo cáo trình bày lại chương trình, kết đồ thị theo • • câu hỏi phần Các bước thực hành Tại cuối buổi thực hành sinh viên phải trả lời câu hỏi giáo viên hướng dẫn đặt vấn đề sau: Kiến thức lý thuyết Xử lý số tín hiệu thực hành Các câu lệnh hàm MATLAB sinh viên sử dụng thực hành Phần viết báo cáo đánh giá với thang điểm tối đa dành cho tất thành viên nhóm, phần trả lời câu hỏi đánh giá với thang điểm tối đa dành cho cá nhân Nếu đạt điểm tổng cộng hai phần, sinh viên coi đạt yêu cầu thực hành BÀI MÔ PHỎNG HỆ THỐNG VÀ TÍN HIỆU RỜI RẠC BẰNG MATLAB A GIỚI THIỆU VỀ MATLAB: • • • • • • MABLAB, viết tắt Matrix Labotary, công cụ phần mềm hỗ trợ tính toán ma trận MATLAB tích họp môi trường chung loạt khả bao gồm tính toán, hiển thị kết lập trình nhàm giải vấn đề liên quan đến toán học Các vấn đề bao gồm: Các phương trình toán học tính toán Phát triển giải thuật Thu thập liệu Mô hình hoá, mô tạo mẫu theo thiết kế Phân tích, khảo sát thể liệu hình ảnh Biểu diễn biểu đồ mang tính khoa học tính kỹ thuật • Phát triển ứng dụng, bao gồm việc phát triển với giao diện với người sử dụng Ưu điểm bật MATLAB, đề cập trên, khả tính toán, đặc biệt toán liên quan đến ma trận vector, với thời gian nhiều lần so với công việc tính toán ngôn ngữ lập trình khác c hay Fortran Khả lập trình MATLAB linh hoạt, cụ thể việc tạo câu lệnh riêng hàm riêng người sử dụng Hệ thống MATLAB bao gồm phần sau: • Môi trường phát triển: Là tập hợp công cụ, phần lớn chúng giao diện đồ hoạ, giúp người dùng sử dụng câu lệnh hàm MATLAB • Thư viện hàm toán học: Là tập hợp hàm toán học bao gồm từ hàm sin, cosin, phép tính đại số phức đến hàm phức tạp tìm ma trận đảo, tìm ma trận riêng, hàm Bessel biến đổi Fourier nhanh (Fast Fourier Transform - FFT) • Ngôn ngữ lập trình: Là ngôn ngữ bậc cao liên quan đến ma trận mảng Trong MATLAB có đầy đủ đặc trưng ngôn ngữ lập trình bao gồm lệnh rẽ nhánh, hàm, cấu trúc liệu, nhập/xuất liệu, đặc tính liên quan đến lập trình hướng đối tượng (object- oriented programming) • Đồ hoạ: Là tập hợp công cụ để biểu diễn ma trận vector đồ hoạ Bên cạnh công cụ mức thấp để thể liệu dạng chiều chiều, xử lý hình ảnh tĩnh, ảnh động có công cụ mức cao dùng để tạo biểu diễn đồ hoạ theo ý đồ người sử dụng tạo giao diện đồ hoạ người sử dụng Các API: Là thư viện cho phép người sử dụng gọi hàm viết ngôn ngữ c Fortran Chúng bao gồm công cụ cho phép gọi hàm từ MATLAB dạng liên kết động, để đọc ghi tệp MAT MATLAB, bên cạnh khả tính toán ma trận, đồng thời ngôn ngữ lập trình mạnh Các tệp chương trình MATLAB ghi dạng đuôi m, gọi M-fỉles Có hai loại tệp dạng đuôi m: • Tệp kịch (scripts): Loại tệp biến đầu vào đầu ra, đơn xử lý liệu với biến vùng làm việc thời (work space) MATLAB Khi gõ tên tệp cửa sổ lệnh (command window), lệnh lưu nội dung tệp gọi theo kịch từ xuống • Tệp mô tả hàm (functions): Loại tệp cần khai báo biến đầu vào đầu Các biến khai bên loại tệp biến địa phương (local variables) có phạm vi ảnh hưởng hàm số Nội dung tệp nhàm mục đích tính toán thông số đầu dựa tham số đầu vào hàm số Tên tệp loại cần trùng với tên hàm số khai báo mô tả bên nội dung tệp Đe khởi động MATLAB, người sử dụng nháy đúp chuột vào biểu tượng MATLAB 6.5 hình desktop vào menu Start -> All Programs -> MATLAB 6.5 -> MATLAB 6.5 từ giao diện Windows Sau MATLAB khởi động, hình người sử dụng hiển thị lên môi trường phát triển tích họp MATLAB bao gồm số cửa sổ, có cửa số quan trọng sau: • Cửa sổ lệnh (Command Window): có chức thể dấu nhắc để nhập vào lệnh từ bàn phím, hiển thị kết tính toán sau gõ lệnh gọi hàm • Cửa sổ lệnh dùng (Command History): thể danh mục lệnh gõ hàm gọi theo phiên làm việc • Cửa sổ thư mục thời (Current Dừectory): thể danh sách tệp dạng đuôi m tồn thư mục thời Để thay đổi thư mục thời cửa sổ nhỏ nằm bên cửa số lệnh • Vùng làm việc (Workspace): thể danh mục tất biến bao gồm: tên biến, giá trị thời biến, kiểu biến tồn phiên làm việc Ngoài loạt cửa sổ khác kích hoạt hiển thị gọi lệnh chọn mục phần Menu MATLAB Để biết thêm cửa số tham khảo thêm phần trợ giúp (Help) MATLAB cách nhấn phím F1 Để soạn thảo kịch hàm, thực chọn menu File -> New -> M-File nhắp chuột vào biểu tượng New M-File công cụ (Toolbar) Trên hình hiển thị lên cửa sổ soạn thảo (Editor) có đầy đủ chức soạn thảo giống môi trường soạn thảo ngôn ngữ lập trình khác Đe xem trợ giúp lệnh hay hàm có sẵn MATLAB, gõ lệnh help kèm theo tên lệnh hàm từ cửa sổ lệnh MATLAB, ví dụ: » help • fît cửa số lệnh đưa nội dung chức năng, cú pháp cho tham số vào/ra cho hàm thực phép biến đổi Fourier nhanh MATLAB đặt tên fift B TÍN HIỆU YÀ HỆ THỐNG RỜI RẠC Ở MIỀN THỜI GIAN RỜI RẠC n Yêu cầu trước làm thí nghiệm Sinh viên nắm vững kiến thức “Tín hiệu hệ thống rời rạc” bao gồm: • Các tín hiệu • Hệ thống tuyến tính bất biến Đáp ứng xung hệ thống tuyến tính bất biến • Phương trình sai phân tuyến tính hệ số Muc đích phần thí nehiêm Sinh viên dùng MATLAB mô nội dung sau: • Các tín hiệu miền thời gian tính chất • Tính tích chập • Đáp ứng hệ thống mô tả phương trình sai phân tuyến tính hệ số • Tương quan tín hiệu Môt số lênh hàm MATLAB Phần đưa danh mục lệnh hàm MATLAB sử dụng phần thí nghiệm Đe biết cụ thể chức hàm cú pháp lệnh gọi hàm, gõ lệnh help kèm theo tên hàm cửa số lệnh MATLAB zeros: tạo ma trận với toàn phần tử có giá trị bàng ones: tạo ma trận với toàn phần tử có giá trị bàng rand: tạo ma trận với phần tử nhận giá trị ngẫu nhiên phân bố khoảng từ đến randn: tạo ma trận với phần tử nhận giá trị ngẫu nhiên theo phân bố Gauss có giá trị trung bình 0, phương sai min: trả giá trị nhỏ ma trận max: trả giá trị lớn ma trận fliplr: lộn ngược lại thứ tự phần tử ma trận theo hướng xuất phát từ phải qua trái trở thành từ trái qua phải plot stem: vẽ đồ thị dãy số, plot để thể dạng liên tục, stem để thể dạng rời rạc, thường sử dụng hàm stem để vẽ túi hiệu miền n conv: trả tích chập vector filter: trả đáp ứng theo thời gian hệ thống mô tả phương trình sai phân tuyến tính hệ số Ngoài ra, sinh viên cần tìm hiểu cách cẩn thận phép toán ma trận vector phần trợ giúp (Help) MATLAB cách nhấn F1 vào mục MATLAB -> Getting Started -> Matrices and Arrays Các bước thực hành Bài 1; Cho dãy xung đơn vị chương trình vẽ chúng sau: Dãy xung đơn vị: elf; % Tao day xung don vi n =-10:20; delta = [zeros(l,10) zeros(l,20)]; subplot(2,l,l); stem(n, delta); xlabel(’thoi gỉan roi rac n'); ylabel(’bien do’); titleftao day xung don vi'); axis([-10 20 01.2]); Có đồ thị sau Yêu cầu: Từ chương trình trên, viết chương trình đề vẽ đồ thị sau có dạng Dãy nhảy đem vị u(n) có dạng sau: Viết dãy dốc đơn vị r(n); Viết chương trình biểu diễn hàm mũ thực đồ thị Bài 2: Cho dãy chữ nhật với chiều dài L chương trình sau elf; %tao day chu nhat n = 0:20; L=10; chunhat= [ones(l,L) zeros(l,20-L+l)]; subplot(2,l,l); stem(rL,chunliat); grỉd; xlabel(’thoi gian roi rac n'); ylabel(’bien do'); title(’tao day xung chu nhat'); - Yêu cầu: Trên sở chương trình cho, sinh viên hãy: - viết thêm vào chương trình để vừa vẽ đồ thị cho vừa vẽ đồ thị tín hiệu trễ mẫu Muốn thay đổi chiều dài dãy phải làm Bài Cho dãy hình sin tương tự trình vẽ tín hình sin hiệu hình sin tín hiệu dạng chương hiệu Tù tín cho thoi gian roi rac II tao day xung chu nhát tre vẽ tín hiệu hình sin rời rạc với chiều dài dãy phát từ đến 50, với pha ban đầu tín hiệu 71 n/2 n=0:40; 1=0.1; pha=0; Â=1.5; goc=2 *pi*f*n-pha; x=A*cos(goc); clf; plot(n,x); axis([0 40 -2 2]); grid; title(’Day tin hieu hình sin*); xlabel(’Chi so thoi gian n*); ylabel(’Bien đô'); axis; Dãy tín hiệu nhận Chi Sũ thoi gian n Yêu cầu: Hãy vẽ dạng tín hiệu hình sin thành tín hiệu hình sin rời rạc Bài 4: Chương trình tính tích chập hai dãy hữu hạn sau % Tinh toan Vã ve tick chap cua day co chỉeu dai huu han % Nhap cac day tu ban phim x=input(fNhap day kich thich X-); h=input(fNhap dap ung xung cua he thong h-); y=conv(x9h); nx=length(x); %chieu dai cua day X nh=length(h); %Chieu dai cua day h ny=nx+nh~l; %Chieu dai cua day y disp(y); n=0:ny-l; subplot(2,l,l); stem(n,y); xlabelfThoi gian roi rac n’); ylabel(’Bien do’); titleftich chap cua day co chieu dãi huu ban'); Yêu cầu: Hãy ứiay đổi chương trình để vừa vẽ tích chập dây vẽ dây trễ tích chập dãy y, với trễ nhập từ bàn phím