1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU

52 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 52
Dung lượng 3,21 MB

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ oOo— BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU Phan Đình Đạt – 1811890 BÀI 1: GIỚI THIỆU MATLAB CƠ BẢN MỘT SỐ LỆNH MATLAB® CƠ BẢN SỬ DỤNG TRONG MÔN HỌC Vẽ đồ thị: x = 0:pi/20:2*pi; y = sin(x); subplot(1,2,1); plot(x,y,'b-'); axis([0 2*pi -1 1]); xlabel('x (pi)'); ylabel('y=sin(x)'); title('Graph of Continuous Sine from to 2pi'); subplot(1,2,2);stem(x,y,'r-') axis([0 2*pi -1 1]); xlabel('x (pi)'); ylabel('y=sin(x)'); title('Graph of Discrete Sine from to 2pi'); MỘT SỐ PHÉP BIẾN ĐỔI TÍN HIỆU SỐ SỬ DỤNG MATLAB 2.1 Biến đổi DFT IDFT clc; close all; xn = [1, 2, 3, 4, 5, 6]; L = length(xn); Xk = zeros(1,L); for k = 0:L-1 for n = 0:L-1 Xk(k+1) = Xk(k+1) + xn(n+1)*exp(-1j*2*pi*k*n/L); end end Xk_2 = fft(xn,L); t=0:L-1; subplot(1,3,1); stem(t,xn); ylabel ('Amplitude'); xlabel ('Time Index'); title('Input Sequence'); t=0:L-1; Xk_magnitude = abs(Xk); Xk_2_magnitude = abs(Xk_2); subplot(1,3,2); stem(t,Xk_magnitude,'bo-'); hold on; stem(t,Xk_2_magnitude,'r* '); hold on; ylabel ('Amplitude'); xlabel ('K'); title('Magnitude Response'); Xk_phase = angle(Xk); Xk_2_phase = angle(Xk_2); subplot(1,3,3); stem(t,Xk_phase,'bo-'); hold on; stem(t,Xk_2_phase,'r* '); hold on; ylabel ('Phase'); xlabel ('K'); title ('Phase Response'); legend('Computing', 'fft Matlab'); clc; close all; Xk = [10, -2+2j, -2, -2-2j]; L = length(Xk); xn = zeros(1,L); for k = 0:L-1 for n = 0:L-1 xn(k+1) = xn(k+1) + Xk(n+1)*exp(1j*2*pi*k*n/L); end end xn=xn/L; xn_2 = ifft(Xk,L); t=0:L-1; subplot(1,3,1); stem(t,Xk); ylabel ('Amplitude'); xlabel ('Time Index'); title('Input Sequence'); t=0:L-1; xn_magnitude = abs(xn); xn_2_magnitude = abs(xn_2); subplot(1,3,2); stem(t,xn_magnitude,'bo-'); hold on; stem(t,xn_2_magnitude,'r* '); hold on; ylabel ('Amplitude'); xlabel ('K'); title('Magnitude Response'); xn_phase = angle(xn); xn_2_phase = angle(xn_2); subplot(1,3,3); stem(t,xn_phase,'bo-'); hold on; stem(t,xn_2_phase,'r* '); hold on; ylabel ('Phase'); xlabel ('K'); title ('Phase Response'); legend('Computing', 'ifft Matlab'); 2.2 Tích chập xn = [1, 3, 5, 3, 6, 3]; hn = [1, 4, 7, 2, 8]; Lx = length(xn); N = length(hn); M = N - 1; Ly = Lx + M; yn = zeros(1, Ly); for n = : Ly-1 for m = max(0,n-Lx + 1):min(n,M) yn(n+1) = yn(n+1) + hn(m+1) * xn(n-m+1); end end yn_2 = conv(xn,hn); >> yn = 24 46 67 82 100 57 54 24 24 46 67 82 100 57 54 24 >> yn_2 = 2.3 Đáp ứng tần số lọc omega = 0:pi/10:pi; H = (5 + 2*exp(-1j*omega))./(1-0.8*exp(-1j*omega)); H_manitude = abs(H); H_phase = angle(H); a = [1, -0.8]; b = [5, 2]; [H_matlab, w] = freqz(b,a); H_matlab_manitude = abs(H_matlab); H_matlab_phase = angle(H_matlab); subplot(1,5,1); plot(omega,H); ylabel ('Amplitude'); xlabel ('Time Index'); title('Input Sequence'); subplot(1,5,2); plot(omega,H_manitude,'bo-'); hold on; ylabel ('Amplitude'); xlabel ('K'); title('Magnitude Response'); subplot(1,5,3); plot(w,H_matlab_manitude,'r*-'); hold on; ylabel ('Amplitude'); xlabel ('K'); title('Magnitude Response'); subplot(1,5,4); plot(omega,H_phase,'bo-'); hold on; ylabel ('Phase'); xlabel ('K'); title ('Phase Response'); subplot(1,5,5); plot(w,H_matlab_phase,'r*-'); hold on; ylabel ('Phase'); xlabel ('K'); title ('Phase Response'); legend('Computing', 'freqz Matlab'); 2.4 Tạo mẫu giá trị số tín hiệu clc ; Fs = 8e3; Ts = 1/Fs; F_xt = 300; T_sim = 0.01; t = : Ts : T_sim - Ts; xn = sin(2 * pi * F_xt * t); N = length(xn); Xk = fft(xn, N); Xk_Man = abs(Xk); Xk_Pha = angle(Xk); figure(1) subplot(1,2,1) hold on plot(t, xn); xlabel('Time (sec)'); ylabel('Amplitude'); title('Nhom: xx | MSSV: yyyyy'); subplot(1,2,2) hold on plot(0:N-1, xn); xlabel('Sampling index - n'); ylabel('Amplitude'); title('Nhom: xx | MSSV: yyyyy'); figure(2) subplot(1,2,1) stem((0:N/2-1)*Fs/N, Xk_Man(1:N/2) / N); xlabel('Frequency (Hz)'); ylabel('Amplitude'); title('Nhom: xx | MSSV: yyyyy'); subplot(1,2,2) plot((0:N/2-1)*Fs/N, Xk_Pha(1:N/2) ); xlabel('Frequency (Hz)'); ylabel('Phase'); title('Nhom: xx | MSSV: yyyyy'); Thiết kế lọc số 3.1 Thiết kế lọc số với công cụ SPTool FIR: h = bs2700.tf.num g = bs2700.tf.den [H, w] = freqz(h,g); H_manitude = abs(H); H_phase = angle(H); subplot(1,3,1); plot(w,H); ylabel ('Amplitude'); xlabel ('Time Index'); title('Input Sequence'); subplot(1,3,2); plot(w,H_manitude,'bo-'); hold on; ylabel ('Amplitude'); xlabel ('K'); title('Magnitude Response'); subplot(1,3,3); plot(w,H_phase,'bo-'); hold on; ylabel ('Phase'); xlabel ('K'); subplot(1,3,2); plot(w,H_manitude,'bo-'); hold on; ylabel ('Amplitude'); xlabel ('K'); title('Magnitude Response'); subplot(1,3,3); plot(w,H_phase,'bo-'); hold on; ylabel ('Phase'); xlabel ('K'); title ('Phase Response'); Kiểm tra lọc với tín hiệu sine đa tần có thành phần tần số 1000 Hz 1750 Hz: Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sin tần số 100 – 3900 Hz: clc; xn=zeros(1,400); fs=8000; for n=1:400 for ii=100:100:3900 xn(n)=xn(n)+cos(ii*2*pi*n/fs); end end h = bs1750.tf.num; N=length(xn); M=length(h); Y=M-1; Ly=N+M; yn=zeros(1,Ly); for n=0:Ly-1 for m=max(0,n-N+1):min(n,Y) yn(n+1)=yn(n+1)+h(m+1)*xn(n-m+1); end end figure(1) stem(xn); grid on; xlabel('lay mau xn'); ylabel('Amplitude'); Ly=length(yn); Yk=fft(yn,Ly); Yk_man=abs(Yk); Yk_pha=angle(Yk); figure(2) stem(yn) grid on; xlabel('lay mau yn'); ylabel('Amplitude'); figure(3) stem((0:Ly/2-1)*Fs/Ly, Yk_man(1:Ly/2)/Ly); xlabel('pho bien y'); ylabel('Amplitude'); Nhận xét: Bộ lọc thực yêu cầu mong muốn 2.2 Bộ lọc IIR thông thấp Thống số thiết kế: Đáp ứng tần số: Gía trị hệ số đáp ứng xung tầng bậc lọc: 0.0085 1.0000 1.0000 1.0000 1.0000 0.0154 0.8768 0.0542 -0.4025 -0.5955 0.0085 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 -0.1589 -0.2993 -0.5186 -0.7499 -0.9582 0.0209 0.1394 0.3357 0.5712 0.8412 Kiểm tra lọc với ngõ vào tín hiệu sin đa tần có thành phần tần số 1000 Hz 1700 Hz: Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sin tần số 100 – 3900 Hz: Nhận xét: Bộ lọc thực yêu cầu mong muốn 2.3 Thực lọc IIR thông dải Thơng số thiết kế: Đáp ứng tần số: Gía trị hệ số đáp ứng xung tầng bậc lọc: 0.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.0001 -1.9317 1.5644 -1.5644 1.2190 -1.2190 0.9858 0.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.0999 -0.0999 0.2683 -0.2683 0.3769 -0.3769 0.4367 0.3945 0.3945 0.4614 0.4614 0.5574 0.5574 0.6534 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 -0.9858 -0.8351 0.8351 0.7374 -0.7374 -0.6750 0.6750 -0.6377 0.6377 0.6202 -0.6202 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 -0.4367 -0.4663 0.4663 0.4800 -0.4800 -0.4872 0.4872 -0.4932 0.4932 0.5016 -0.5016 0.6534 0.7381 0.7381 0.8098 0.8098 0.8709 0.8709 0.9247 0.9247 0.9749 0.9749 Kiểm tra lọc với ngõ vào tín hiệu sin đa tần có thành phần tần số 1000 Hz 2000: Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sin tần số 100 – 3900 Hz: clc; xn=zeros(1,400); fs=8000; for n=1:400 for ii=100:100:3900 xn(n)=xn(n)+cos(ii*2*pi*n/fs); end end h = bp2000.tf.num; N=length(xn); M=length(h); Y=M-1; Ly=N+M; yn=zeros(1,Ly); for n=0:Ly-1 for m=max(0,n-N+1):min(n,Y) yn(n+1)=yn(n+1)+h(m+1)*xn(n-m+1); end end figure(1) stem(xn); grid on; xlabel('lay mau xn'); ylabel('Amplitude'); Ly=length(yn); Yk=fft(yn,Ly); Yk_man=abs(Yk); Yk_pha=angle(Yk); figure(2) stem(yn) grid on; xlabel('lay mau yn'); ylabel('Amplitude'); figure(3) stem((0:Ly/2-1)*Fs/Ly, Yk_man(1:Ly/2)/Ly); xlabel('pho bien y'); ylabel('Amplitude'); Nhận xét: Bộ lọc thực yêu cầu mong muốn 2.4 Thiết kế lọc IIR multiband f = [0 0.1 0.12 0.18 0.2 0.3 0.32 0.38 0.4 1]; m = [0 1 0 1 0]; n = 63; [num, den] = yulewalk(n-1,f,m); [h w] = freqz(num,den,256); plot(5000*f,m); figure; plot(w/pi,abs(h)); plot(w/pi,angle(h)); Đáp ứng tần số: Gía trị hệ số đáp ứng xung tầng bậc lọc thực kit DSP: 0.0040 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.0040 -0.0884 1.4576 1.9786 -0.8861 -1.9754 -1.4569 -0.8516 1.2286 1.6245 1.8877 -0.6586 0.9593 1.7798 -1.5170 0.6151 -1.4982 -1.2927 1.9509 -1.8637 -1.7853 -0.5676 -1.0577 -1.5863 -1.2292 -0.6109 -0.8444 -0.0032 1.0029 0.9969 0.9970 0.3535 1.0055 0.9704 0.5483 0.9972 0.9969 0.9985 0.7037 1.0004 0.9991 0.6302 1.0020 0.9992 0.9946 0.9989 0.9374 0.9237 1.0018 0.9417 0.9957 0.9971 0.8540 0.9588 0.0040 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.2857 -1.2725 1.3253 1.7908 -1.6567 -1.5851 -0.8344 -0.9567 1.1737 1.5194 1.7898 -0.7552 0.9142 1.6998 -1.7678 0.5676 -1.6170 -1.0797 1.8969 -1.8328 -1.8136 -0.7141 -1.0584 -1.5940 -1.1467 -0.6768 -0.8444 -0.6801 0.7443 0.8359 0.8359 0.8374 0.8382 0.8545 0.8694 0.8721 0.8865 0.8872 0.8902 0.9008 0.9112 0.9124 0.9137 0.9289 0.9294 0.9320 0.9393 0.9433 0.9470 0.9511 0.9526 0.9536 0.9570 0.9589 1.0000 1.0000 1.0000 1.0000 -1.6581 -1.9250 -0.6712 -0.5898 0.9576 1.0028 0.9428 0.9686 1.0000 1.0000 1.0000 1.0000 -1.6593 -1.8692 -0.6406 -0.6093 0.9598 0.9630 0.9650 0.9816 Kiểm tra lọc với ngõ vào tín hiệu sin đa tần có thành phần tần số 500 Hz, 750 Hz 1750 Hz: Kiểm tra lọc với ngõ vào tín hiệu tổng tín hiệu sin tần số 100 – 3900 Hz: f = [0 0.1 0.12 0.18 0.2 0.3 0.32 0.38 0.4 1]; m = [0 1 0 1 0]; n = 63; [num, den] = yulewalk(n-1,f,m); [h w] = freqz(num,den,256); xn=zeros(1,400); fs=8000; for n=1:400 for ii=100:100:3900 xn(n)=xn(n)+cos(ii*2*pi*n/fs); end end N=length(xn); M=length(h); Y=M-1; Ly=N+M; yn=zeros(1,Ly); for n=0:Ly-1 for m=max(0,n-N+1):min(n,Y) yn(n+1)=yn(n+1)+h(m+1)*xn(n-m+1); end end figure(1) stem(xn); grid on; xlabel('lay mau xn'); ylabel('Amplitude'); Ly=length(yn); Yk=fft(yn,Ly); Yk_man=abs(Yk); Yk_pha=angle(Yk); figure(2) stem(yn) grid on; xlabel('lay mau yn'); ylabel('Amplitude'); figure(3) stem((0:Ly/2-1)*Fs/Ly, Yk_man(1:Ly/2)/Ly); xlabel('pho bien y'); ylabel('Amplitude'); Nhận xét: Bộ lọc thực yêu cầu mong muốn

Ngày đăng: 16/06/2022, 05:32

w