Thực hành một số lệnh xử lý tín hiệu và hệ thống rời rạc trong miền thời gia, bộ lọc FIR
BÀI THỰC HÀNH MATLAB Mục đích: Cho sinh viên làm quen với số lệnh xử lý tín hiệu hệ thống rời rạc miền thời gia, lọc FIR Phần Thực hành lệnh xử lý tín hiệu hệ thống rời rạc miền thời gian Yêu cầu thực hành: Sinh viên tìm hiểu lệnh với trợ giúp phần help Matlab, thực chương trình theo phát triền theo tập Lệnh zeros: tạo ma trận với tồn phần tử có giá trị Lệnh ones: tạo ma trận với toàn phần tử có giá trị Lệnh 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 Lệnh 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 Lệnh min: trả giá trị nhỏ ma trận Lệnh max: trả giá trị lớn ma trận Lệnh 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 Lệnh 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ín hiệu miền n Lệnh conv: trả tích chập vector Bài 1: Cho dãy xung đơn vị chương trình vẽ chúng sau: Dãy xung đơn vị: clf; % Tao day xung don vi n = -10:20; delta = [zeros(1,10) zeros(1,20)]; subplot(2,1,1); stem(n,delta); xlabel('thoi gian roi rac n'); ylabel('bien do'); title('tao day xung don vi'); axis([-10 20 1.2]); Kết cho đồ thị sau: Bài tập: Từ chương trình vẽ xung đơn vị trên, viết chương trình vẽ đồ thị tín hiệu có dạng a Dãy nhảy đơn vị u(n) có dạng sau: b Viết dãy dốc đơn vị r(n); c 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 tạo dẫy xung chữ nhật sau clf; %tao day chu nhat n = 0:20; L=10; chunhat= [ones(1,L) zeros(1,20-L+1)]; subplot(2,1,1); stem(n,chunhat); grid; xlabel('thoi gian roi rac n'); ylabel('bien do'); title('tao day xung chu nhat'); axis([0 20 1.2]); Kết cho đồ thị sau: Bài tập: Trên sở chương trình dẫy xung chữ nhật cho, sinh viên thực việc sau: a 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 sau: b Thực việc nhập chiều dài L dãy từ bàn phím Bài Cho dãy tín hiệu hình sin dạng tương tự chương trình vẽ tín hiệu hình sin Từ tín hiệu hình sin cho 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 /2 n=0:40; f=0.1; pha=0; A=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 hinh sin'); xlabel('Chi so thoi gian n'); ylabel('Bien do'); axis; Kết cho đồ thị sau: Bài tập: 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: Viết chương trình tính tích chập hai dãy hữu hạn sau % Tinh toan va ve tich chap cua day co chieu dai huu han % Nhap cac day tu ban phim x=input('Nhap day kich thich x='); h=input('Nhap dap ung xung cua he thong h='); y=conv(x,h); nx=length(x); %chieu dai cua day x nh=length(h); %Chieu dai cua day h ny=nx+nh-1; %Chieu dai cua day y disp(y); n=0:ny-1; subplot(2,1,1); stem(n,y); xlabel('Thoi gian roi rac n'); ylabel('Bien do'); title('tich chap cua day co chieu dai huu han'); Chạy chương trình Nhap day kich thich x=[2 5] Nhap dap ung xung cua he thong h=[1 1] Kết cho đồ thị sau: Bài tập: Hãy thay đổ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 Phần Thực hành phép biến đổi Fourier, Yêu cầu thực hành: Sinh viên tìm hiểu lệnh với trợ giúp phần help Matlab, thực chương trình theo phát triền theo tập Bài 1: Cho chuỗi x(n) =[1,1,1,1], tìm biến đổi Fourier thời gian rời rạc, vẽ biên độ pha x = [1,1,1,1]; subplot(1,1,1); w = [0:1:500]*2*pi/500; [H] = freqz(x,1,w); magH = abs(H); phaH = angle(H); phaH(126)=47.5841*pi/180; subplot(2,1,1); plot(w/pi,magH); grid xlabel('frequency in pi units'); ylabel('|X|'); title('Magnitude of the DTFT') subplot(2,1,2); plot(w/pi,phaH/pi*180); grid xlabel('frequency in pi units'); ylabel('Degrees'); title('Angle of the DTFT') Kết cho đồ thị sau: Bài tập: Hãy thay đổi chương trình để thực với chuỗi nhập từ bàn phím Bài 2: Cho dãy x=cos(0.48πn)+ cos(0.52πn)πn)+ cos(0.52πn)n)+ cos(0.52πn)+ cos(0.52πn)n) Xác định vẽ phổ Fourier rời rạc x(n), 0≤n≤10 n=[0:1:99]; x=cos(0.48*pi*n)+cos(0.52*pi*n); n1=[0:1:9];y1=x(1:1:10); subplot(2,1,1);stem(n1,y1);title('signal x(n),