TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA ĐIỆN CÁC BÀI THỰC HÀNH MÔN HỌC TÍN HIỆU VÀ HỆ THỐNG ( bài) Họ tên sinh viên: Mã lớp thí nghiệm: Mã số sinh viên: (Sinh viên phải nộp lại vào buổi bảo vệ tuần cuối để chấm điểm) HÀ NỘI - 2010 3-1 BÀI Mô hình trạng thái đáp ứng xung hệ thống I Mục đích • • • Tính toán ma trận chuyển trạng thái đáp ứng xung hệ thống Tìm hiểu số lệnh hiển thị, lệnh tính toán với ma trận MATLAB Sử dụng MATLAB để soạn thảo chương trình tính ma trận chuyển trạng thái đáp ứng xung hệ thống II Yêu cầu sinh viên • • • Thực trước Bài 3.1 3.2 nhà Đọc tài liệu hướng dẫn trả lời câu hỏi CBHD trước làm thực hành Hoàn thành nội dung thực hành (kể nhà) trước tham dự buổi III Nội dung Bài 3.1 (tự chuẩn bị làm nhà): Tính ma trận chuyển trạng thái hệ liên tục Mô hình trạng thái tuyến tính hệ SISO liên tục có dạng: x = Ax + bu, A ∈ \n×n ,b ∈ \n y = cT x + du, c ∈ \n ,d ∈ \ (3.1) Với trạng thái đầu x(0) tín hiệu vào u(t), đáp ứng hệ thống xác định sau: x(t ) = e At x(0) + t ∫0 eA(t −τ )bu(τ )d τ y(t ) = cT x(t ) + du(t ) At ma trận hàm mũ e = (3.2) ∞ (At )k gọi ma trận chuyển trạng thái Như vậy, ∑ k =0 k ! việc tính toán đáp ứng hệ tuyến tính dựa vào tính toán ma trận chuyển trạng thái Ký hiệu I ma trận đơn vị n × n, ta biết giá trị riêng λi , i = 1, 2,… , n ma trận A nghiệm đa thức bậc n sau det(λI − A) = (3.3) Cách xác định ma trận chuyển trạng thái e At , dựa định lý Cayley Hamilton cho sau e At = c0I + c1A + c2A2 + "cn −1An −1 (3.4) hệ số ci hàm giá trị riêng λ Trong trường hợp giá trị riêng ma trận A phân biệt, hệ số ci tính từ lời giải hệ phương trình: c0 + c1λ1 + c2λ12 + " + cn −1λ1n −1 = eλ1t c0 + c1λ2 + c2λ22 + " + cn −1λ2n −1 = eλ2t " c0 + c1λn + c2λn2 + " + cn −1λnn −1 = eλnt (3.5) ) Dựa vào công thức (3.3) ÷ (3.5), em tính toán ma trận chuyển trạng thái eAt cho ⎡−2 ⎤ ⎥ ghi lời giải vào phần A= ⎢ ⎢⎣ −1 ⎥⎦ 3-2 Bài 3.2 (tự chuẩn bị làm nhà): Tính ma trận chuyển trạng thái đáp ứng xung hệ không liên tục Mô hình trạng thái tuyến tính hệ SISO không liên tục có dạng: x(k + 1) = Ax (k ) + bu(k ), A ∈ \n×n ,b ∈ \n y(k ) = cT x(k ) + du(k ), c ∈ \n ,d ∈ \ (3.6) Với trạng thái đầu x(0) tín hiệu vào u(k), đáp ứng hệ thống xác định sau: k −1 x(k ) = A x(0) + ∑ Ak −i −1bu(k ) k i =0 k −1 ⎛ ⎞ y(k ) = cT ⎜⎜⎜ Ak x(0) + ∑ Ak −i −1bu(k ) ⎟⎟⎟ + du(k ) ⎜⎝ ⎠⎟ i =0 (3.7) Đáp ứng xung g(k) hệ là: g(k ) = cT Ak −1b + d δ [ k ] Ma trận chuyển trạng thái An tính toán từ định lý Cayley Hamilton sau An = c0I + c1A + c2A2 + " + cN −1AN −1 (3.8) (3.9) λ1 , λ2 ,… , λN N giá trị riêng phân biệt ma trận A ) Dựa các công thức (3.8) (3.9) em tìm lời giải (dạng biểu thức) cho đáp ứng xung hệ có tham số: ⎡ −a1 ⎤ ⎡ b1 − b2a1 ⎤ ⎥, ⎥ , cT = [ ] d = b2 A=⎢ b=⎢ ⎢⎣ −a0 ⎥⎦ ⎢⎣ b0 − b2a0 ⎥⎦ a1 = −2, a0 = 3, b2 = 2, b1 = −3, b0 = Kết quả: 3-3 Bài 3.3 (thực có hướng dẫn PTN): Tính đáp ứng xung hệ liên tục Cho hệ thống liên tục có mô hình trạng thái tuyến tính: x (t ) = Ax(t ) + bu(t ) y(t ) = cT x (t ) + du(t ) Đáp ứng xung hệ cho bởi: g(t ) = cT e Atb + d δ(t ) (3.10) At Bây ta sử dụng MATLAB để tính toán ma trận chuyển trạng thái e đáp ứng xung g(t ) hệ với tham số: ⎡ -2 ⎤ ⎡0⎤ ⎥, A= ⎢ b = ⎢ ⎥ , cT = [ 1 ] d = ⎢⎣ ⎥⎦ ⎢⎣ ⎥⎦ a) Ta dùng hàm eig(x) để tìm giá trị riêng ma trận n × n Ngoài ra, MATLAB có hàm fprintf(fid format, A, ) để viết liệu định dạng vào file Muốn biết hàm fprint sử dụng nào, ta gõ lệnh help fprintf ) Các em gõ đoạn lệnh ghi kết đoạn lệnh vào phần chấm chấm A=[-2 1;0 -1]; e = eig(A); fprintf(' \n'); fprintf('lambda1 = %5.2f \t', e(1)); fprintf('lambda2 = %5.2f \t', e(2)); fprintf(' \n'); Kết quả: b) Vì A ma trận × 2, sử dụng hai thành phần công thức (3.4) eAt = c0I + c1A (3.11a) a0 a1 nhận từ c0 + c1λ1 = eλ1t c0 + c1λ2 = eλ2t hay c0 − 2c1 = e −2t c0 − c1 = e −t (3.11b) ) Các em gõ đoạn lệnh để tìm lời giải hệ phương trình (3.11b) ghi kết đoạn lệnh vào phần chấm chấm Q=[1 -2; -1]; q=sym('[exp(-2*t); exp(-t)]'); c=Q\q; fprintf(' \n'); disp('c0 = '); disp(c(1)); disp('c1 = '); disp(c(2)); Kết quả: c) Tiếp theo ta thực việc thay giá trị vào (3.11a) tính toán ma trận để tìm ma trận chuyển trạng thái Để ý hàm eye(n) MATLAB sử dụng để tạo ma trận đơn vị n × n syms t ; c0 = -exp(-2*t)+2*exp(-t); c1 = -exp(-2*t)+exp(-t); A=[-2 1;0 -1]; eAt=c0*eye(2)+c1*A ; Kết quả: d) Cuối ta sử dụng công thức (3.10) để tìm đáp ứng xung hệ MATLAB có hàm Dirac(t) để biểu diễn xung đơn vị δ (t ) B=[0; 1]; C=[1 1]; D=2; g=C*eAt*B + D*Dirac(t) Kết quả: 3-4 Bài 3.4 (thực có hướng dẫn PTN): Tính vẽ đáp ứng xung hệ không liên tục Chương trình sau tính toán vẽ đáp ứng xung hệ không liên tục Bài 3.2 hai cách: a) Phương pháp lặp, áp dụng công thức (3.6) b) Phương pháp trực tiếp, sử dụng lời giải dạng biểu thức tìm Bài 3.2 (áp dụng công thức tính đáp ứng xung 3.8) )Các em gõ lại chương trình nhận xét kết quả: % Program 3.4: Determining the impulse response using the state space model clear; % clear variables and functions from memory clf; % clear current figure a1=-2;a0=3;b2=2;b1=-3;b0=4; A=[-a1 1;-a0 0];C=[1 0];B=[b1-b2*a1; b0-b2*a0];D=b2; % state space model N=10; % number of samples h=(1:N)*0; h(1)= D;% first iteration with nonzero input x=B; % iterative method for n=2:N % subsequent iterations h(n)=C*x; x=A*x; end h(1:6) % direct method n=0:1:N-1; ex= (sqrt(3)).^(n-1).*cos(atan(sqrt(2))*(n-1)); ex= ex-(1/sqrt(2))* (sqrt(3)).^(n-1).*sin(atan(sqrt(2))*(n-1));ex(1)=2; ex(1:6) plot(n,h,'*',n,ex,'o') xlabel('n') ylabel('h(n)') title('Impulse response') legend('iterative','direct') 40 computed exact 30 20 h(n) 10 -10 -20 -30 -40 n Hình 3.1 Đáp ứng xung hệ thống cho Bài 3.4 3-5 Nhận xét: Bài 3.5 (về nhà tự làm) Cho hệ thống liên tục mô tả mô hình trạng thái (3.1) ⎡ ⎤ ⎢ ⎥ ⎥, A=⎢ ⎢ ⎥ ⎢⎣ −6 −11 −6 ⎥⎦ ⎡0⎤ ⎢ ⎥ b = ⎢0⎥, ⎢ ⎥ ⎢⎣ ⎥⎦ cT = [ 1 ] d = ) Các em sử dụng MATLAB để tìm đáp ứng xung hệ thống (tham khảo Bài 3.3), sau ghi lại kết vào phần chấm chấm Kết quả: 3-6 ... chương trình tính ma trận chuyển trạng thái đáp ứng xung hệ thống II Yêu cầu sinh viên • • • Thực trước Bài 3. 1 3. 2 nhà Đọc tài liệu hướng dẫn trả lời câu hỏi CBHD trước làm thực hành Hoàn thành nội... Hoàn thành nội dung thực hành (kể nhà) trước tham dự buổi III Nội dung Bài 3. 1 (tự chuẩn bị làm nhà): Tính ma trận chuyển trạng thái hệ liên tục Mô hình trạng thái tuyến tính hệ SISO liên tục có... có hướng dẫn PTN): Tính vẽ đáp ứng xung hệ không liên tục Chương trình sau tính toán vẽ đáp ứng xung hệ không liên tục Bài 3. 2 hai cách: a) Phương pháp lặp, áp dụng công thức (3. 6) b) Phương pháp