Thông tin tài liệu
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA -⁂ - BÁO CÁO THÍ NGHIỆM BÀI 1: GIỚI THIỆU MATLAB CƠ BẢN Họ tên sinh viên: Trần Trung Kiên MSSV: 1913863 GVHD: Huỳnh Văn Phận Thực hành Thực hành 1: Viết file-M thực chương trình lưu với tên Bai1_NHOMx_PlotGraph.m Yêu cầu 1: Ghi nhớ lệnh matlab chương trình Các lệnh matlab: x = 0:pi/20:2*pi; % Define vector x from to 2pi with step size pi/100 y = sin(x); subplot(1,2,1); and with subplot position plot(x,y,'b-'); xlabel('x (pi)'); ylabel('y=sin(x)'); %Label title('Graph of Continuous subplot(1,2,2);stem(x,y,'r-') %Plot p versus q with subplot position axis([0 2*pi -1 1]); Kết : Thực hành Thực hành 2: Viết file-M thực chương trình lưu với tên Bai1_NHOMx_DFT.m Yêu cầu 2: Ghi nhớ lệnh matlab chương trình Các lệnh matlab: clc; close all; % Find the phases of individual DFT points Xk_phase = angle(Xk); Xk_2_phase = angle(Xk_2); % plot the magnitude sequence 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'); %Plotting input sequence t=0:L-1; subplot(1,3,1); stem(t,xn); ylabel ('Amplitude'); xlabel ('Time Index'); title('Input Sequence'); t=0:L-1; % Find the magnitudes of individual DFT points Xk_magnitude = abs(Xk); Xk_2_magnitude = abs(Xk_2); % plot the magnitude response 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'); Kết : Thực hành Thực hành 3: Viết chương trình thực biến đổi IDFT chuỗi theo cách Lưu lại với tên Bai1_NHOMx_IDFT.m Các lệnh matlab: Xk = [10,-2+2j,-2,-2-2j]; L = length(Xk); xn = zeros(1,L); %IDFT for n=0:L-1 for k=0:L-1 xn(n+1) = xn(n+1) + (1/L)*Xk(k+1)*exp(1j*2*pi*k*n/L); end end xn = real(xn); disp(xn); %IFFT matlab xn_2 = ifft(Xk,L); Kết quả: Thực hành Thực hành 4: Viết file-M tìm ngõ y(n) hệ thống nhân với ngõ vào x(n) = [1, 3, 5, 3, 6, 3] đáp ứng xung h(n) = [1, 4, 7, 2, 8] theo cách, lưu với tên Bai1_NHOMx_conv.m Các lệnh matlab: clc; clear all; xn=[1,3,5,3,6,3]; hn=[1,4,7,2,8]; %Tính tốn Lx = length(xn); N = length(hn); M = N-1; Ly = Lx + M; yn = zeros(1,Ly); for n = 0: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 disp(yn); %conv Matlab yn_2 = conv(xn,hn); disp(yn_2); Kết quả: Thực hành Thực hành 5: Viết file-M vẽ đáp ứng tần số hệ thống có hàm truyền theo cách: i) tính toán đáp ứng tần số ii) sử dụng hàm Matlab, lưu với tên Bai1_NHOMx_freqz.m Các lệnh matlab: % Tính tốn 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); %hàm Matlab a = [5, 2]; b = [1, -0.8]; [H_matlab, w] = freqz(a,b); H_matlab_manitude = abs(H_matlab); H_matlab_phase = angle(H_matlab); %Đồ thị đáp ứng tần số subplot(1,2,1); plot(omega,H_manitude,'b'); ylabel('Biên độ'); xlabel('w'); title('Đồ thị đáp ứng tần số tính tốn'); subplot(1,2,2); plot(w,H_matlab_manitude,'r'); ylabel('Biên ??'); xlabel('w'); title('Đồ thị đáp ứng tần số Matlab'); Kết quả: Thực hành Thực hành 6: Viết chương trình Matlab thực yêu cầu sau: Tạo chu kỳ mẫu tín hiệu với Tạo mẫu tín hiệu lấy mẫu với 20 chu kỳ T Tạo tín hiệu sinc tần số 500 Hz 1) Tạo chu kỳ mẫu tín hiệu với với Hz.: Các lệnh matlab: clc; clear; Fs = Ts = F_xt T_xt 8000; 1/Fs; = 400; = 1/F_xt; t = 0:Ts:5*T_xt-Ts; xn = cos(2*pi*F_xt*t); N = length(xn); Xk = fft(xn, N); Xk_Man = abs(Xk); Xk_Pha = angle(Xk); %Đồ thị tín hiệu theo thời gian figure(1); subplot(1,2,1); plot(t,xn); ylabel('Biên độ'); xlabel('t'); title('Đồ thị tín hiệu theo thời gian); %Đồ thị tín hiệu theo mẫu subplot(1,2,2); plot(0:N-1,xn); ylabel('Amplitude'); xlabel('n'); title('Đồ thị tín hiệu theo mẫu); %Đồ thị phổ figure(2) subplot(1,2,1) stem((0:N/2-1)*Fs/N, Xk_Man(1:N/2) / N); Hz, tần số lẫy mẫu 8000 Hz Hz, (s) lấy mẫu Hz, tần số lẫy mẫu 8000 Kết quả: 2) Tạo mẫu tín hiệu lấy mẫu với 20 chu kỳ T Các lệnh matlab: clc; clear; T=4; Ts = T/20; Fs = 1/Ts; F_xt = 1/T; T_sim = 1; t = -T:Ts:T-Ts; xn = rectpuls((t-T/4),T); N = length(xn); Xk = fft(xn, N); Xk_Man = abs(Xk); Xk_Pha = angle(Xk); %Đồ thị tín hiệu theo thời gian figure(1); subplot(1,2,1); plot(t,xn); ylabel('Biên độ'); xlabel('t'); title('Đồ thị tín hiệu theo thời gian'); %Đồ thị tín hiệu theo mẫu subplot(1,2,2); plot(0:N-1,xn); ylabel('Amplitude'); xlabel('n'); title('Đồ thị tín hiệu theo mẫu '); %Đồ thị phổ 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('Đồ thị phổ biên độ'); subplot(1,2,2) plot((0:N/2-1)*Fs/N, Xk_Pha(1:N/2) ); xlabel('Frequency (Hz)'); ylabel('Phase'); Kết quả: 3) Tạo tín hiệu sinc mẫu tần số 500 Hz Các lệnh matlab: với clc; clear; Fs = 500; Ts = 1/Fs; F_xt = 40; T_sim = 1; t = 0:Ts:T_sim-Ts; xn = sinc(2*pi*F_xt*(t-0.5)); N = length(xn); Xk = fft(xn, N); Xk_Man = abs(Xk); Xk_Pha = angle(Xk); %Đồ thị tín hiệu theo thời gian figure(1); subplot(1,2,1); plot(t,xn); ylabel('Biên ??'); xlabel('t'); title('Đồ thị tín hiệu theo thời gian'); %Đồ thị tín hiệu theo mẫu subplot(1,2,2); plot(0:N-1,xn); ylabel('Amplitude'); xlabel('n'); title('Đồ thị tín hiệu theo mẫu'); %Đồ thị phổ 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('Đồ thị phổ biên độ'); subplot(1,2,2) plot((0:N/2-1)*Fs/N, Xk_Pha(1:N/2) ); xlabel('Frequency (Hz)'); ylabel('Phase'); title('Đồ thị phổ pha'); Hz, (s) lấy Kết quả: Thực hành Thực hành 7: Thực việc thiết kế lọc FIR chắn dải với thông số ví dụ Lấy hệ số viết chương trình vẽ đáp ứng tần số lọc Lưu lại với tên BAI_1_NHOMx_bs2700_freqz Sử dụng hàm semilogy thay cho plot đưa nhận xét khác biệt Thiết kế lọc: Các lệnh matlab: h1 = filt1.tf.num [h w] = freqz(h1); subplot(1,2,1); plot(w,abs(h)); ylabel('Biên độ'); xlabel('tần số'); title('đồ thị dùng hàm plot'); subplot(1,2,2); semilogy(w,abs(h)); ylabel('Biên độ'); Kết quả: Thực hành Thực hành 8: Thực việc thiết kế lọc FIR chắn dải với thơng số ví dụ Lấy hệ số viết chương trình vẽ đáp ứng tần số lọc Lưu lại với tên BAI_1_NHOMx_bs2700_freqz Sử dụng hàm semilogy thay cho plot Thiết kế lọc: Các lệnh matlab: [z,p,k] = tf2zp(filt2.tf.num, filt2.tf.den); sos = zp2sos(z,p,k); disp(sos); h1 = filt2.tf.num h2 = filt2.tf.den [h w] = freqz(h1,h2); semilogy(w,abs(h)); ylabel('Biên độ'); xlabel('tần số'); title('đồ thị dùng hàm semilogy'); Kết quả: Thực hành Thực hành 9: Thực chương trình thiết kế lọc thông dải đa dải vẽ đáp ứng tần số với yêu cầu ví dụ Các lệnh matlab: %Ví dụ f1 = [0 0.1 0.12 0.18 0.2 0.3 0.32 0.38 0.4 1]; m1 = [0 1 0 1 0]; n1 = 63; cof = remez(n1-1,f1,m1); [h1 w] = freqz(cof,1,256); subplot(1,2,1); plot(f1 * 5000,m1, 'b'); hold on; plot(w/pi*5000,abs(h1), 'r-.'); %Ví dụ f2 = [0 0.1 0.12 0.18 0.2 0.3 0.32 0.38 0.4 1]; m2 = [0 1 0 1 0]; n2 = 63; [num, den] = yulewalk(n2-1,f2,m2); [h2 w] = freqz(num,den,256); Kết quả: 10.Thực hành 10 Thực hành 10: Thiết kế lọc FIR chắn đa dải 1000-1500 2500-3000, có bậc 62, tần số lấy mẫu 10 kHz Sau vẽ đáp ứng tần số lọc Thiết kế lọc: FN= Dải 10 kHz=5000 Hz 3100 - 5000 0.62 - 1 Các lệnh matlab: f = [0 0.18 0.2 0.3 0.32 0.48 0.5 0.6 0.62 1]; m = [1 0 1 0 1]; n = 62 cof = remez(n-1,f,m); [h w] = freqz(cof,1,256); % p l o t m a g n i t u d e o f t h e f i l t e r p l o t ( f * 0 , m , ' b ' ) ; p l o t ( w / p i * 0 , a b s ( h ) , ' r ' ) ; h o l d o n ; Kết quả: 11.Thực hành 11 Thực hành 11: Thiết kế lọc IIR chắn đa dải 1000-1500 2500-3000, có bậc 62, có tần số lấy mẫu 10 kHz Sau vẽ đáp ứng tần số lọc Thiết kế lọc: FN= 10 kHz=5000 Hz Dải Các lệnh matlab: f = [0 0.18 0.2 0.3 0.32 0.48 0.5 0.6 0.62 1]; m = [1 0 1 0 1]; n = 62; [num, den] = yulewalk(n-1,f,m); [h w] = freqz(num,den,256); plot(f * 5000,m, 'b'); hold on; plot(w/pi*5000,abs(h), 'r-.'); Kết quả: ... Các lệnh matlab: %Ví dụ f1 = [0 0 .1 0 .12 0 .18 0.2 0.3 0.32 0.38 0.4 1] ; m1 = [0 1 0 1 0]; n1 = 63; cof = remez(n1 -1, f1,m1); [h1 w] = freqz(cof ,1, 256); subplot (1, 2 ,1) ; plot(f1 * 5000,m1, ''b'');... Lưu lại với tên Bai1_NHOMx_IDFT.m Các lệnh matlab: Xk = [10 ,-2+2j,-2,-2-2j]; L = length(Xk); xn = zeros (1, L); %IDFT for n=0:L -1 for k=0:L -1 xn(n +1) = xn(n +1) + (1/ L)*Xk(k +1) *exp(1j*2*pi*k*n/L);... quả: 11 .Thực hành 11 Thực hành 11 : Thiết kế lọc IIR chắn đa dải 10 00 -15 00 2500-3000, có bậc 62, có tần số lấy mẫu 10 kHz Sau vẽ đáp ứng tần số lọc Thiết kế lọc: FN= 10 kHz=5000 Hz Dải Các lệnh matlab:
Ngày đăng: 03/12/2022, 09:03
Xem thêm: