BÀI TẬP XỬ LÝ TÍN HIỆU SỐ Viết chương trình tính tổng chập theo công thức và theo đồ thị

13 1.4K 2
BÀI TẬP XỬ LÝ TÍN HIỆU SỐ  Viết chương trình tính tổng chập theo công thức và theo đồ thị

Đ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

ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ============ XỬ LÝ TÍN HIỆU SỐ Đề Tài Viết chương trình tính tổng chập theo công thức và theo đồ thị GV HƯỚNG DẪN: Lê Thị Minh Thùy NHÓM SV THỰC HIỆN: (Nhóm 2) Nguyễn Thị Mai Hoa Nguyễn Thị Ngọc Huyên Nguyễn Thị Nga Nguyễn Thị Phương Thảo Nguyễn Thị Vân HÀ NỘI- 2010 1 I/ Cơ sở lý thuyết. 1. Khái niệm tín hiệu. − Về mặt vật lý: Tín hiệu là dạng biểu diễn vật lý của thông tin. − Về mặt toán học: Tín hiệu được biểu diễn bởi hàm của một hoặc nhiều biến số độc lập. Các biến độc lập có thể là: thời gian, áp suất, độ cao, nhiệt độ… − Biến độc lập thường gặp là thời gian. − Một ví dụ về tín hiệu có biến độc lập là thời gian: tín hiệu điện tim. − Có những tín hiệu là hàm theo nhiều biến độc lập. Ví dụ: tín hiệu ảnh. − Tất cả các tín hiệu đều do một nguồn nào đó tạo ra, theo một cách thức nào đó. − Quá trình tạo ra tín hiệu thường liên quan tới một hệ thống, hệ thống này đáp ứng lại một kích thích. − Hệ thống là một thiết bị vật lý thực hiện một tác động nào đó lên tín hiệu. − Nguồn tín hiệu là kích thích liên quan đến hệ thống. − Xử lý tín hiệu là một loạt các công việc hay phép toán thực hiện trên tín hiệu nhằm đạt một mục đích nào đó. 2. Phân loại tín hiệu. Tín hiệu được phân loại dựa vào nhiều cơ sở khác nhau và tương ứng có các cách phân loại khác nhau. Ở đây, ta dựa vào sự liên tục hay rời rạc của thời gian và biên độ để phân loại. − Tín hiệu liên tục: Tín hiệu tương tự và tín hiệu lượng tử hóa. − Tín hiệu rời rạc: Tín hiệu lấy mẫu và tín hiệu số. 2 3. Tín hiệu rời rạc. 3.1/ Biểu diễn tín hiệu rời rạc. − Biểu diễn theo toán học − Biểu diễn bằng đồ thị: Cách biểu diễn này cho ta cách nhìn trực quan về một tín hiệu rời rạc. − Biểu diễn bằng dãy số 3.2/ Một số tín hiệu rời rạc cơ bản − Tín hiệu xung đơn vị − Tín hiệu bậc đơn vị − Tín hiệu hàm mũ x(n) = a n − Tín hiệu tuần hoàn 3    ≠ ≤≤ = n NnNBT nx 0 )( 21 =  δ =  ≠  1 n 0 (n) 0 n 0      = ≥ 1 n 0 u(n) 0 n<0 x(n)=x(n+N), N>0: chu kỳ x(n) = Sin[(2π/n)(n+n o )] − Tín hiệu chữ nhật − Tín hiệu dốc đơn vị 3.3/ Các phép toán với tín hiệu rời rạc − Phép nhân 2 tín hiệu rời rạc Tích của 2 tín hiệu rời rạc nhận được bằng cách nhân từng đôi một các giá trị mẫu đối với cùng một trị số của biến độc lập. − Phép nhân tín hiệu rời rạc với hằng số 4 Tích của một tín hiệu rời rạc với hằng số nhận được bằng cách nhân tất cả các giá trị mẫu của dãy với hằng số đó. − Phép cộng 2 tín hiệu rời rạc Tổng của 2 tín hiệu rời rạc nhận được bằng cách cộng từng đôi một các giá trị mẫu đối với cùng một trị số của biến độc lập. − Phép dịch Nếu dịch phải n 0 mẫu, x(n) trở thành y(n) y(n)=x(n-n 0 ) − Phép trễ 1 mẫu Một tín hiệu rời rạc bất kỳ x(n) luôn có thể được biểu diễn như sau: 4. Hệ thống rời rạc. − Tín hiệu vào của hệ thống gọi là tác động − Tín hiệu ra được gọi là đáp ứng − Toán tử T: Một hệ thống tuyến tính đặc trưng bởi toán tử T làm nhiệm vụ biến đổi tín hiệu vào thành tín hiệu ra. 5. Hệ thống tuyến tính − Đối với các hệ thống tuyến tính toán tử T phải tuân theo nguyên lý xếp chồng, tức là: − Đáp ứng xung của HTTT + Ta có tín hiệu đầu vào là: + Thực hiện biến đổi theo toán tử T ta xác định y(n) 5 ∞ =−∞ = δ − ∑ k x(n) x(k) (n k) ∞ =−∞ = δ − ∑ k x(n) x(k) (n k) + Đặt + Ta có: + h k (n) được gọi là đáp ứng xung. Đáp ứng xung đặc trưng hoàn toàn cho hệ thống. * Hệ thống tuyến tính bất biến Nếu ta có y(n) là đáp ứng với tác động x(n) thì hệ thống được gọi là bất biến nếu y(n-k) là đáp ứng ứng với tác động x(n-k). 6. Phép tổng chập. 6.1/ Khái quát − Nếu hệ bất biến theo thời gian • Tác động d(n) cho đáp ứng h(n) • Tác động d(n-k) cho đáp ứng h(n-k) − Với hệ tuyến tính bất biến (TTBB): h(n) là đáp ứng xung của hệ *: Phép tổng chập 6.2/ Phương pháp tính tổng chập a) Tính trực tiếp: Tìm từng giá trị y(n) ứng với từng giá trị cụ thể của n. Với n = 2 cũng tính tương tự. Tương tự với n <0 Tập hợp các giá trị tìm được ta có kết quả của phép chập y(n) cần tìm. b) Tính phép tổng chập bằng đồ thị + B1: Đổi biến n thành biến k, cố định x(k). + B2: Quay h(k) đối xứng qua trục tung để thu được h(-k). + B3: Dịch chuyển h(-k) theo từng giá trị n, nếu n > 0 dịch chuyển về bên phải, nếu n<0 dịch về bên trái ta thu được h(n-k). 6 = δ − k h (n) T[ (n k)] ∞ =−∞ = − ∑ k y(n) x(k) h(n k) =y(n) x(n)*h(n) ∞ =−∞ = − ∑ k y(n) x(k) h(n k) + B4: Thực hiện phép nhân x(k).h(n-k) theo từng mẫu với tất cả các giá trị của k. + B5: Cộng các giá trị thu được ta có một giá trị của y(n). Tổng hợp các kết quả ta có tín hiệu y(n). 6.3/ Các tính chất của phép chập − Tính chất giao hoán: y(n)=x(n)*h(n)=h(n)*x(n) Trong một hệ thống, ta có thể hoán vị đầu vào x(n) và đáp ứng xung h(n) cho nhau thì đáp ứng đầu ra y(n) không thay đổi. − Tính chất kết hợp: y(n) = x(n)*[h 1 (n)*h 2 (n)]=[x(n)*h 1 (n)]*h 2 (n) Nếu ta có hai hệ thống ghép nối tiếp với nhau thì đáp ứng xung của hệ thống tổng quát sẽ là tích chập của đáp ứng xung của các hệ thống thành phần. − Tính phân phối: x(n)*(h 1 (n)+h 2 (n))=x(n)*h 1 (n)+ x(n)*h 2 (n) Nếu ta có hai hệ thống ghép song song với nhau thì đáp ứng xung của hệ thống tổng quát sẽ là tổng đáp ứng xung của các hệ thống thành phần. II. Chương trình. Dựa vào một số lý thuyết đã trình bày ở trên chúng em đã xây dựng chương trình tính tổng chập dựa trên ngôn ngữ java như sau: 1. Chương trình tính tổng chập theo công thức. * Phần code tính tổng chập theo công thức (sử dụng ngôn ngữ java) //Tính tong chap theo cong thuc import fita.ncthang.console.cin; public class xlthso { public static void main(String[]args) { int m,n,i,j,k; float a,b,c,d; char kt1,kt2; float[] x,h,y,x1,h1; System.out.println("\tNhap tin hieu dau vao x(n)"); System.out.print("Nhap vao khoang gioi han k:(a<=k<=b): "); a=cin.getFloat(); kt1=cin.getChar(); b=cin.getFloat(); m=(int)(b-a+1); 7 x=new float[m]; System.out.println("Nhap he so tin hieu dau vao:"); for(i=0;i<m;i++) { System.out.printf("\tx(%2.0f)= ",i+a); x[i]=cin.getFloat(); } System.out.println("\tNhap dap ung xung h(n)"); System.out.print("Nhap vao khoang gioi han k:(a<=k<=b): "); c=cin.getFloat(); kt2=cin.getChar(); d=cin.getFloat(); n=(int)(d-c+1); h=new float[n]; System.out.println("Nhap he so dap ung xung:"); for(i=0;i<n;i++) { System.out.printf("\th(%2.0f)= ",i+c); h[i]=cin.getFloat(); } //Ham trung gian x1=new float[m+n-1]; for(i=0;i<m+n-1;i++) if(i<m) x1[i]=x[i]; else x1[i]=0; h1=new float[m+n-1]; for(i=0;i<m+n-1;i++) if(i<n) h1[i]=h[i]; else h1[i]=0; // Tinh he so tin hieu ra y(n) y=new float[m+n-1]; for(k=0;k<m+n-1;k++) for(i=0,j=k;i<=k&&j>=0;i++,j ) { y[k]=y[k]+x1[i]*h1[j]; } 8 // Dua ra cac tin hieu System.out.println("\n\tDua ra cac tin hieu"); // Tin hieu dau vao System.out.println("Tin hieu dau vao x(n) la: "); for(k=0;k<m;k++) { if(x[k]!=0) if(k+a<0) System.out.printf("%6.2f$(n+%2.0f)",x[k],-(k+a)); else if(k+a==0) System.out.printf("%6.2f$(n)",Math.abs(x[k])); else System.out.printf("%6.2f$(n%3.0f)",Math.abs(x[k]),-(k+a)); if(k==m-1) System.out.println("."); else { if(x[k+1]>0) System.out.print(" + "); if(x[k+1]<0) System.out.print(" - "); } } // Dap ung xung System.out.println("Dap ung xung h(n) la: "); for(k=0;k<n;k++) { if(h[k]!=0) if(k+c<0) System.out.printf("%6.2f$(n+%2.0f)",h[k],-(k+c)); else if(k+c==0) System.out.printf("%6.2f$(n)",Math.abs(h[k])); else System.out.printf("%6.2f$(n%3.0f)",Math.abs(h[k]),-(k+c)); if(k==n-1) System.out.println("."); else { if(h[k+1]>0) System.out.print(" + "); if(h[k+1]<0) System.out.print(" - "); } } // Dua ra tin hieu ra System.out.println("Tin hieu dau ra y(n) la: "); 9 for(k=0;k<m+n-1;k++) { if(y[k]!=0) if(k+a+c<0) System.out.printf("%6.2f$(n+%2.0f)",y[k],-(k+a+c)); else if(k+a+c==0) System.out.printf("%6.2f$(n)",Math.abs(y[k])); else System.out.printf("%6.2f$(n%3.0f)",Math.abs(y[k]),-(k+a+c)); if(k==m+n-2) System.out.println("."); else { if(y[k+1]>0) System.out.print(" + "); if(y[k+1]<0) System.out.print(" - "); } } } } VD 1: x(n) = δ(n) + δ(n-1) h(n) = -δ(n+1) + δ(n) + 2δ(n-1) y(n) = = x(-1)h(n+1) + x(0)h(n) + x(1)h(n-1) = - h(n+1) + h(n) + 2h(n-1) = - [δ(n+1) + δ(n)] + [δ(n) + δ(n-1)] + 2[δ(n-1) + δ(n-2)] =- δ(n+1) + 3δ(n-1) + 2δ(n-2) * Chương trình chạy: Do mọi tín hiệu đều có thể biểu diễn dưới dạng: Nên khi chạy chương trình cần nhập vào giá trị cho từng x(k) và h(k) cụ thể. Chương trình sẽ thực hiện tính toán và đưa ra kết quả cụ thể như sau: 10 ∞ =−∞ = δ − ∑ k x(n) x(k) (n k) [...]...2 Chương trình minh họa tính tổng chập bằng đồ thị Demo Chương trình tính tổng chập của hai dãy hữu hạn % Tinh toan va ve tich chap cua 2 day co chieu dai huu han % Nhap cac day tu ban phim x=input('Nhap day kich thich x='); h=input('Nhap dap... stem(n,y); xlabel('Thoi gian roi rac n'); ylabel('Bien do'); title('tich chap cua 2 day co chieu dai huu han'); 11 VD2: Cho dãy số x(n)= δ(n) + δ(n-1) + δ(n-2) h(n)=δ(n) - δ(n-1) tổng chập y(n)=x(n) * h(n) = δ(n) - δ(n-3) Chú ý: Khi nhập ta phải nhập các phần tử x(n) dưới dạng [ 1 1 1] và h(n) là [1 -1] 12 13 . NÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ============ XỬ LÝ TÍN HIỆU SỐ Đề Tài Viết chương trình tính tổng chập theo công thức và theo đồ thị GV HƯỚNG DẪN: Lê Thị Minh Thùy NHÓM SV THỰC. dựa trên ngôn ngữ java như sau: 1. Chương trình tính tổng chập theo công thức. * Phần code tính tổng chập theo công thức (sử dụng ngôn ngữ java) / /Tính tong chap theo cong thuc import fita.ncthang.console.cin; public. tương tự và tín hiệu lượng tử hóa. − Tín hiệu rời rạc: Tín hiệu lấy mẫu và tín hiệu số. 2 3. Tín hiệu rời rạc. 3.1/ Biểu diễn tín hiệu rời rạc. − Biểu diễn theo toán học − Biểu diễn bằng đồ thị:

Ngày đăng: 14/04/2015, 09:01

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan