1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo THÍ NGHIỆM bài 1 GIỚI THIỆU MATLAB cơ bản

22 12 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 22
Dung lượng 901,11 KB

Nội dung

ĐẠ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); % Define vector y subplot(1,2,1); % Create a graph with two sub-graphs in row column and with subplot position plot(x,y,'b-'); % Plot x versus y axis([0 2*pi -1 1]); xlabel('x (pi)'); ylabel('y=sin(x)'); %Label of x-axis and y-axis title('Graph of Continuous Sine from to 2pi'); %Title of graph 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; xn = [1, 2, 3, 4, 5, 6]; % Find the phases of individual DFT points L = length(xn); %find the length of the sequence Xk_phase = angle(Xk); Xk = zeros(1,L); %initialize an array of same size as that of Xk_2_phase = angle(Xk_2); input sequence % plot the magnitude sequence subplot(1,3,3); %DFT of the sequence stem(t,Xk_phase,'bo-'); hold on; for k = 0:L-1 stem(t,Xk_2_phase,'r* '); hold on; for n = 0:L-1 ylabel ('Phase'); Xk(k+1) = Xk(k+1) + xn(n+1)*exp(-1j*2*pi*k*n/L); xlabel ('K'); end title ('Phase Response'); end % Using FFT Matlab'fft Matlab'); legend('Computing', Xk_2 = fft(xn,L); %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  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);  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 tố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 với 1) Tạo chu kỳ mẫu tín hiệu 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'); title('Đồ thị phổ pha');  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));  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);  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: F N = 10 kHz=5000 Hz Dải Tần số (Hz) Tần số chuẩn hóa f/FN Biên độ – 900 – 0.18 1000 – 1500 0.2 – 0.3 1600 – 2400 0.32 – 0.48 2500 – 3000 0.5 – 0.6 3100 - 5000 0.62 - 1  Các lệnh matlab: f = m = n = cof [0 0.18 0.2 0.3 0.32 0.48 0.5 0.6 0.62 1]; [1 0 1 0 1]; 62 = remez(n-1,f,m); [h w] = freqz(cof,1,256); % plot magnitude of the filter plot(f * 5000,m, 'b'); hold on; plot(w/pi*5000,abs(h), 'r-.');  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: F N = 10 kHz=5000 Hz Dải Tần số (Hz) Tần số chuẩn hóa f/FN Biên độ – 900 – 0.18 1000 – 1500 0.2 – 0.3 1600 – 2400 0.32 – 0.48 2500 – 3000 0.5 – 0.6 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; [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ạ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);... 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);  Kết quả: 10 .Thực hành 10 Thực hành 10 : Thiết kế

Ngày đăng: 21/02/2022, 01:11

TỪ KHÓA LIÊN QUAN

w