ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ εργαστήριο Αλέξανδρος Α. Λαζαρίδης ιδάκτωρ Ηλεκτρολόγος Μηχανικός LOGO και Μηχανικός Υπολογιστών Βασισµένες στις Σηµειώσεις Εργαστηρίου Ψηφιακής Επεξεργασίας Σήµατος ( ρ. Ηλίας Κίτσας Σέρρες 2010) 1 η Ενότητα Εισαγωγή στο Matlab 2
Εισαγωγή στο Matlab Το ΜΑΤΙΑΒ είναι µια interpreted γλώσσα προγραµµατισµού. ο πηγαίος κώδικας δε µεταφράζεται αλλά διερµηνεύεται κατά την εκτέλεση. µπορείτε να δώσετε εντολές στο command prompt του ΜΑΤLΑΒ. µπορείτε να δηµιουργήσετε script αρχεία (τα Μ-files), τα οποία δεν είναι άλλο από διαδοχή εντολών που επιθυµούµε να εκτελεστούν. 3 Εισαγωγή στο Matlab Βασικό στοιχείο του ΜΑΤLΑΒ είναι ο πίνακας. Γι αυτό είναι εξαιρετικά χρήσιµο εργαλείο για την ψηφιακή επεξεργασία σήµατος. Ένα µονοδιάστατο σήµα µπορεί να θεωρηθεί ως ένα διάνυσµα. Οι βαθµωτές µεταβλητές είναι ουσιαστικά πίνακες 1x1. 4
Εισαγωγή στο Matlab Οι δείκτες αρχίζουν από το 1 (και όχι από το 0). Βάζοντας ελληνικό ερωτηµατικό (;) µετά από µια εντολή, αποφεύγουµε την εµφάνιση του αποτελέσµατος στην οθόνη. Μπορούµε να κινηθούµε µπρος-πίσω στο ιστορικό των εντολών που έχουµε δώσει µε το πάνω και κάτω βέλος. Με Ctrl+C διακόπτουµε την εκτέλεση εντολής ή την εµφάνιση αποτελεσµάτων στην οθόνη. Υπάρχει διάκριση κεφαλαίων και πεζών (άρα η µεταβλητή Υ είναι διαφορετική από την y). Τα ονόµατα των συναρτήσεων γράφονται µε πεζά. Ότι ακολουθεί το σύµβολο % σε µια γραµµή είναι σχόλιο. Αποφεύγετε όσο µπορείτε τους βρόχους. Αυτοί εκτελούνται αργά (θυµηθείτε ότι µιλάµε για interpreted γλώσσα). 5 Εισαγωγή στο Matlab Προκειµένου να δώσετε σε ένα διάνυσµα τιµές που απέχουν κατά µια σταθερή ποσότητα, µπορείτε να χρησιµοποιήσετε την άνωκάτω τελεία (:). Για παράδειγµα, η εντολή b=1:2:11 δηµιουργεί ένα διάνυσµα ο µε τιµές όλους τους περιττούς από 1 ως 11. Αν δίναµε b=1:11 θα είχαµε ένα διάνυσµα µε όλους τους ακέραιους από 1 ως 11. Αντίστοιχα, όταν θέλουµε να προσπελάσουµε τµήµα ενός πίνακα, χρησιµοποιούµε πάλι το :, π.χ. το b(3:6) σηµαίνει το τµήµα του b από το τρίτο ως το έκτο στοιχείο. Για να πάρουµε π.χ. το όγδοο στοιχείο του b δίνουµε απλά b(8). 6
Εισαγωγή στο Matlab Πέρα από τις κλασικές πράξεις πινάκων ορίζονται και οι «στοιχείοπρος- στοιχείο» πράξεις οι οποίες συµβολίζονται µε µια τελεία πριν το αντίστοιχο σύµβολο της πράξης. Π.χ. η πράξη Α*Β ορίζεται µόνο όταν οι διαστάσεις του Α είναι ΚxΜ και του Β είναι ΜxΝ. Αντίθετα, η πράξη Α.*Β ορίζεται µόνο όταν Α και Β έχουν ίδιες διαστάσεις. Για να ορίσουµε ρητά έναν πίνακα, δίνουµε τα στοιχεία του χωρισµένα µε κενά ή µε κόµµα,, µέσα σε αγκύλες. Π.χ. το D=[5 3 8 4 9] ή D=[5, 3, 8, 4, 9] δηµιουργεί ένα διάνυσµα D διαστάσεων 1x5 µε τις τιµές που βλέπουµε. 7 Εισαγωγή στο Matlab Πράξεις και λογικοί τελεστές 8
Εισαγωγή στο Matlab 9 Εισαγωγή στο Matlab 10
Εισαγωγή στο Matlab 11 Εισαγωγή στο Matlab Επισυνάψεις 12
Εισαγωγή στο Matlab Μιγαδικοί αριθµοί 13 Έλεγχος Ροής 14
Εισαγωγή στο Matlab Χρήσιµες συναρτήσεις: Η ones(k,m) δηµιουργεί ένα πίνακα διαστάσεων kxm µε µονάδες. Η zeros(k,m) δηµιουργεί ένα πίνακα διαστάσεων kxm µε µηδενικά. Η length(b) επιστρέφει το µήκος του διανύσµατος b. Η find(α) επιστρέφει τις τιµές του δείκτη για τις οποίες ο Α έχει µη µηδενικές τιµές. Η figure δηµιουργεί ένα νέο παράθυρο γραφικών. Η subplot (k,m, n) δηµιουργεί ένα παράθυρο γραφικών στο οποίο µπορούν να τοποθετηθούν kxm γραφήµατα σε κ γραµµές και m στήλες. Επιπλέον κάνει ενεργό το γράφηµα στη θέση n. Η stem(x,y) δίνει γράφηµα των διακριτών τιµών του y ως προς το x. Η axis([xmin xmax ymin ymax]) θέτει τις ελάχιστες και µέγιστες τιµές των αξόνων. Η title τυπώνει έναν τίτλο στην κορυφή του τρέχοντος γραφήµατος. 15 Ερωτήσεις Ποια(ες) από τις παρακάτω εκφράσεις αναφέρεται στο πρώτο στοιχείο ενός διανύσµατος a; a(0) a[0] a[1] a(1) Σχηµατίζουµε ένα διάνυσµα a=[1,2, 3, 4, 5, 6, 7]. Με ποιες εντολές µπορούµε να µεταβάλλουµε τα στοιχεία που βρίσκονται στις θέσεις τρία έως πέντε σε ένα διάνυσµα, ώστε να έχουν τιµές α) (7, 2, 9), β) (7, 8, 9), γ) όλες µηδέν ; Αν a=[1, 2, 3, 4] και b=[5, 6, 7, 8] να εξετάσετε ποιες από τις παρακάτω εντολές είναι δυνατό να εκτελεστούν χωρίς σφάλµα: a*b a.*b b*a b.*a a*b a.*b a *b Αν a=[1, 2, 3, 4], b=[5, 6, 7, 8], c=2*a και d=-2*b να δηµιουργήσετε ένα παράθυρο γραφικών µε 2x2 (4) γραφήµατα και να απεικονίσετε τα τέσσερα αυτά διανύσµατα αντιστοιχίζοντάς το σε ένα από τα τέσσερα αυτά γραφήµατα. 16
2 η Ενότητα Θεµελιώδεις Συναρτήσεις 17 Συνάρτηση δέλτα Σε ΜΑΤLAΒ υλοποιείται ως εξής : Ορίζουµε το πλάτος της ανεξάρτητης µεταβλητής και δηµιουργούµε διάνυσµα µε ίδια διάσταση, το οποίο να έχει σε όλα τα στοιχεία τιµή 0 εκτός από το στοιχείο που αντιστοιχεί στο n = 0 και έχει τιµή 1. 18
Συνάρτηση δέλτα Η εντολή length(n) µας επιστρέφει το µήκος του n Η εντολή find(n==0) µας επιστρέφει το δείκτη στον οποίο το n παίρνει µηδενική τιµή (κέντρο). Η εντολή zeros(1,m) µας επιστρέφει ένα διάνυσµα µε διάσταση 1 x m µε µηδενικές τιµές. Η εντολή d(k)=1 τοποθετεί µια µονάδα στην θέση k στον πίνακα d. Η εντολή axis([-12 12-2 2]) επανακαθορίζει τα όρια στους άξονες. 19 Συνάρτηση δέλτα 20
Μοναδιαία βηµατική ακολουθία Σε ΜΑΤLAΒ υλοποιείται ως εξής : Ορίζουµε το πλάτος της ανεξάρτητης µεταβλητής και δηµιουργούµε διάνυσµα µε ίδια διάσταση, το οποίο να έχει από n=-10 µέχρι n=-1 τιµές 0 και από n=0 µέχρι n=10 τιµές 1. 21 Μοναδιαία βηµατική ακολουθία 22
Εκθετική ακολουθία Σε ΜΑΤLAΒ υλοποιείται ως εξής : Ορίζουµε το πλάτος της ανεξάρτητης µεταβλητής και δηµιουργούµε διάνυσµα µε ίδια διάσταση, το οποίο να έχει από n=-10 µέχρι n=-6 και από n=6 µέχρι n=10 τιµές 0 και από n=-5 µέχρι n=5 τιµές a n. 23 Εκθετική ακολουθία 24
Γραµµική ακολουθία Σε ΜΑΤLAΒ υλοποιείται ως εξής : Ορίζουµε το πλάτος της ανεξάρτητης µεταβλητής και δηµιουργούµε διάνυσµα µε ίδια διάσταση το οποίο να έχει από n=-10 µέχρι n=-1 τιµές 0 και από n=0 µέχρι n=10 τιµές ανάλογες του n. 25 Γραµµική ακολουθία 26
Να σχεδιαστεί η ακολουθία x(n) = u(n) + 2*δ(n) Ερωτήσεις Ποίαείναιητιµήτηςx(n) γιαn = 0 και ποιαγιαn = 10 ; Να σχεδιαστεί η ακολουθία x1(n) = -2*u(n). Ποιαείναιηδιαφοράαπότη γραφική παράσταση της u(n); Να σχεδιαστεί η ακολουθία x2(n) = r(n) -δ(n). 27 LOGO
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ εργαστήριο Αλέξανδρος Α. Λαζαρίδης ιδάκτωρ Ηλεκτρολόγος Μηχανικός LOGO και Μηχανικός Υπολογιστών Βασισµένες στις Σηµειώσεις Εργαστηρίου Ψηφιακής Επεξεργασίας Σήµατος ( ρ. Ηλίας Κίτσας Σέρρες 2010) 3 η Ενότητα Μετατόπιση 2
Μετατόπιση 3 4 Μετατόπιση n=-20:20; m=length(n); k=find(n==0); a=0.9; x=zeros(1,m); x(k-10:k+10)=a.^n(k-10:k+10); % or a.^[-10:10] % delay x1(n)=x(n-10) x1=zeros(1,m); x1(k:m)=x(k-10:k+10); % advance x2(n)=x(n+10) x2=zeros(1,m); x2(k-20:k)=x(k-10:k+10); % graph of signal x, x1,x2 subplot(3,1,1); stem(n,x); title('original'); subplot(3,1,2); stem(n,x1); title('delay'); subplot(3,1,3); stem(n,x2); title('advance');
Ερωτήσεις Να σχεδιαστεί η ακολουθία x3(n) = u(n)-u(n - 3), όπου u(n) η µοναδιαία βηµατική ακολουθία (βλ. 2η Ενότητα). Πόσες είναι οι µη µηδενικές τιµές της ακολουθίας αυτής; Να σχεδιαστεί η ακολουθία x4(n) = u(n - 3) +δ(n), όπου u(n) η µοναδιαία βηµατική ακολουθία και δ(n) η διακριτή κρουστική ώση (βλ. 2η Ενότητα). Ποια τιµή έχει η x4(n) για n = 0; Να σχεδιαστεί η ακολουθία x5(n) = u(n + 2) - u(n - 2), όπου u(n) η µοναδιαία βηµατική ακολουθία (βλ. 2η Ενότητα). Για ποιες τιµές του n η ακολουθία x5(n) έχει µη µηδενικές τιµές; 5 x3(n) = u(n)-u(n - 3) n=-20:20; m=length(n); k=find(n==0); u=zeros(1,m); u(k:m)=1; %or u=[zeros(1,20) ones(1,21)]; stem(n,u); u1=zeros(1,m); u1(k+3:m)=1; x3=u-u1; stem(n,x3) 6
x4(n) = u(n - 3) +δ(n) n=-20:20; m=length(n); k=find(n==0); d=zeros(1,m); d(k)=1; % or d=[zeros(1,20) 1 zeros(1,20)]; stem(n,d) axis([-22 22-2 2]) x4=u1+d; stem(n,x4); 7 x5(n) = u(n + 2) - u(n - 2) u2=zeros(1,m); u2(k-2:m)=1; u3=zeros(1,m); u3(k+2:m)=1; x5=u2-u3; stem(n,x5); 8
4 η Ενότητα Κλιµάκωση στο χρόνο, Αντιστροφή 9 Κλιµάκωση στο χρόνο, Αντιστροφή 10
Κλιµάκωση στο χρόνο, Αντιστροφή 11 % Sampling n=-20:20; m=length(n); k=find(n==0); a=0.9; x=zeros(1,m); x(k-10:k+10)=a.^n(k-10:k+10); % or a.^[-10:10] % down sampling x1(n)=x(2n) x1=zeros(1,m); x1(k-5:k+5)=x(k-10:2:k+10); % up sampling x2(n)=x(n/2) x2=zeros(1,m); x2(1:2:m)=x(k-10:k+10); % reverse x3(n)=x(-n) x3(1:m)=x(m:-1:1); % or x3=x(m:-1:1) % graph of signal x, x1, x2, x3 subplot(4,1,1); stem(n,x); title('original'); subplot(4,1,2); stem(n,x1); title('down Sampling'); subplot(4,1,3); stem(n,x2); title('up Sampling'); subplot(4,1,4); stem(n,x3); title('reverse'); Να σχεδιαστεί η ακολουθία x4(n) = 2*u(-n), όπου u(n) ηµοναδιαία βηµατική ακολουθία (βλ. 2η Ενότητα). Ερωτήσεις Να σχεδιαστεί η ακολουθία x5(n) = u(n / 3), όταν n ϵ [-20,20] και u(n) η µοναδιαία βηµατική ακολουθία (βλ. 2η Ενότητα). 12
x4(n) = 2*u(-n) n=-20:20; m=length(n); k=find(n==0); u=zeros(1,m); u(k:m)=1; u1(1:m)=2*u(m:-1:1); subplot(2,1,1); stem(n,u); subplot(2,1,2); stem(n,u1); 13 x5(n) = u(n / 3) u2=zeros(1,m); u2(k:3:m)=1; stem(n,u2); 14
LOGO
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ εργαστήριο Αλέξανδρος Α. Λαζαρίδης ιδάκτωρ Ηλεκτρολόγος Μηχανικός LOGO και Μηχανικός Υπολογιστών Βασισµένες στις Σηµειώσεις Εργαστηρίου Ψηφιακής Επεξεργασίας Σήµατος ( ρ. Ηλίας Κίτσας Σέρρες 2010) 5 η Ενότητα Χωρισµός σήµατος σε άθροισµα άρτιου και περιττού µέρους 2
Χωρισµός σήµατος 3 Χωρισµός σήµατος 4 % partition odd - even n=-20:20; m=length(n); k=find(n==0); u=zeros(1,m); u(k:m)=1; % x(-n) ur=u(m:-1:1); % even part xe(n)=1/2[x(n)+x(-n)] ue=1/2*(u+ur); % odd part xo(n)=1/2[x(n)-x(-n)] uo=1/2*(u-ur); % graph of signal x, x1,x2 subplot(3,1,1); stem(n,u); title('original'); axis([-20 20-1 1.5]) subplot(3,1,2); stem(n,ue); title('even part'); axis([-20 20-1 1.5]) subplot(3,1,3); stem(n,uo); title('odd part'); axis([-20 20-1 ρ. 1.5]) Λαζαρίδης Αλέξανδρος
Ερωτήσεις Να υπολογιστεί το άρτιο και περιττό µέρος της ακολουθίας που προκύπτει από τη διαδοχική επανάληψη του αριθµού µητρώου σας θεωρώντας ότι στοn = 0 η τιµή της ακολουθίας είναι ίση µε 1, π.χ. ΑΕΜ: 2342 x(n) = {2,3,4,2,1,2,3,4,2}. Ποιο είναι το άρτιο µέρος της ακολουθίας x1(n) = {-1,-2,-3,0,1,2,3}; Ηθέσητουµηδενός ( n = 0) σηµειώνεται µε _ κάτω από το αντίστοιχο στοιχείο της ακολουθίας. Ποιο είναι το περιττό µέρος της ακολουθίας x2(n) = {-1,2,3, 4,3,2,-1} ; Ηθέσητουµηδενός ( n = 0) σηµειώνεται µε _ κάτω από το αντίστοιχο στοιχείο της ακολουθίας. 5 x(n) = {2,3,4,2,1,2,3,4,2} 6 n=-4:4; x=[2,3,4,2,1,2,3,4,2]; m=length(x); % x(-n) x1=x(m:-1:1); xe=1/2*(x+x1); xo=1/2*(x-x1); subplot(3,1,1); stem(n,x); subplot(3,1,2); stem(n,xe); subplot(3,1,3); stem(n,xo);
x1[n] = {-1,-2,-3,0,1,2,3} n=-3:3; x=[-1,-2,-3,0,1,2,3]; m=length(x); % x(-n) x1=x(m:-1:1); xe=1/2*(x+x1); subplot(2,1,1); stem(n,x); subplot(2,1,2); stem(n,xe); 7 x2[n] = {-1,2,3, 4,3,2,-1} n=-3:3; x=[-1,2,3, 4,3,2,-1]; m=length(x); % x(-n) x1=x(m:-1:1); xo=1/2*(x-x1); subplot(2,1,1); stem(n,x); subplot(2,1,2); stem(n,xo); 8
6 η Ενότητα Συνέλιξη, απόκριση συστηµάτων 9 Συνέλιξη, απόκριση συστηµάτων 10
Συνέλιξη, απόκριση συστηµάτων 11 % Convolution % Input - Impulse Response - Output n=-10:10; m=length(n); k=find(n==0); x=zeros(1,m); h=zeros(1,m); y=zeros(1,m); x(k:k+4)=[1 2 3 4 5]; h(k-1:k+1)=[1 2 1]; yt=conv(x(k:k+4),h(k-1:k+1)); y(k-1:k+5)=yt; % graph of signal x, h,y subplot(3,1,1) stem(n,x) title('input signal') subplot(3,1,2) stem(n,h) title('impulse response') subplot(3,1,3) stem(n,y) title('output signal') Ερωτήσεις Να υπολογιστούν οι τιµές τις εξόδουy1(n) ενός συστήµατος µε απόκριση κρουστικής διέγερσης h1(n) =δ(n) -δ(n -1), όταν η είσοδος στο σύστηµα είναι η ακολουθία x1(n)={1,1,-1,-1,1,1,-1,-1}. Ηθέσητουµηδενός (n = 0)σηµειώνεταιµε _ κάτωαπό το αντίστοιχο στοιχείο της ακολουθίας και δ(n) η διακριτή κρουστική ώση (βλ. 2η Ενότητα). 12
Ερωτήσεις 13 n=-10:10; m=length(n); k=find(n==0); d=zeros(1,m); d(k)=1; d1=zeros(1,m); d1(k+1)=1; h1=d-d1; x1=zeros(1,m); x1(k-4:k+3)=[1,1,-1,-1,1,1,-1,-1]; y=zeros(1,m); y1=conv(x1(k-4:k+3),h1(k:k+1)); y(k-4:k+4)=y1; subplot(3,1,1); stem(n,x1); subplot(3,1,2); stem(n,h1); subplot(3,1,3); stem(n,y); LOGO
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ εργαστήριο Αλέξανδρος Α. Λαζαρίδης ιδάκτωρ Ηλεκτρολόγος Μηχανικός LOGO και Μηχανικός Υπολογιστών Βασισµένες στις Σηµειώσεις Εργαστηρίου Ψηφιακής Επεξεργασίας Σήµατος ( ρ. Ηλίας Κίτσας Σέρρες 2010) 7 η Ενότητα Υπολογισµός ευθύ και αντίστροφου DFT 2
θα σχεδιάσουµε το µέτρο καιτη φάση για τονευθύ το πραγµατικό και φανταστικό µέρος για τον αντίστροφο αυτού του DFT το πραγµατικό καιφανταστικό µέρος για τον αντίστροφο DFT όταν θεωρούµε ότι η ακολουθία x αντιστοιχεί εξαρχής σε DFT. H fft(x) υπολογίζει τον DFT Ν σηµείων του διανύσµατος x, όπου Ν το µήκος του x. H fftshift(x) µετατοπίζει τη µηδενική συχνότητα του φάσµατος ώστε να βρίσκεται στο κέντρο του διανύσµατος. Η abs(x) υπολογίζει το µέτρο του µιγαδικού διανύσµατος x (ή την απόλυτη τιµή ενός πραγµατικού). Η angle(x) υπολογίζει τη φάση του µιγαδικού διανύσµατος x. H ifftshift(x) µετατοπίζει τη µηδενική συχνότητα του φάσµατος ώστε να βρίσκεται στην αρχή του διανύσµατος. H ifft(x) υπολογίζει τον αντίστροφο DFT Ν σηµείων του διανύσµατος x, όπου Ν το µήκος του x. Η real(x) υπολογίζει το πραγµατικό µέρος του διανύσµατος x. Η imag(x) υπολογίζει το φανταστικό µέρος του διανύσµατος x. Για να είναι σωστή η απεικόνιση του DFT όταν χρησιµοποιείται η fftshift, ο οριζόντιος άξονας (k) θα πρέπει να παίρνει τιµές µε βάση τον εξής κανόνα όπου Ν το µήκος του x.
το µέτρο και τη φάση για τον ευθύ % Forward DFT of unit step n=0:19; m=length(n); k=-(m/2):(m/2)-1; x=0*n; x(1:5)=1; y=fft(x); y=fftshift(y); ym=abs(y); yp=angle(y); figure(1); subplot(3,1,1); stem(n,x); xlabel('n'); title('original Signal'); subplot(3,1,2); stem(k,ym); xlabel('k'); title('dft Magnitude'); subplot(3,1,3); stem(k,yp); xlabel('k'); title('dft phase'); το πραγµατικό και φανταστικό µέρος για τον αντίστροφο του DFT %Inverse DFT of y x1=ifftshift(y); x1=ifft(x1); x1r=real(x1); x1i=imag(x1); figure(2); subplot(3,1,1); stem(n,x); xlabel('n'); title('original Signal'); subplot(3,1,2); stem(n,x1r); xlabel('n'); title('real part of signal'); subplot(3,1,3); stem(n,x1i); xlabel('n'); title('imaginary part of signal');
το πραγµατικό και φανταστικό µέρος για τον αντίστροφο DFT όταν θεωρούµε ότι η ακολουθία x αντιστοιχεί εξαρχής σε DFT %Inverse DFT of unit step figure(3); k=0:19; z=ifft(x); zr=real(z); zi=imag(z); subplot(3,1,1); stem(k,x); xlabel('k'); title('original DFT sequence'); subplot(3,1,2); stem(n,zr); xlabel('n'); title('real part of signal'); subplot(3,1,3); stem(n,zi); xlabel('n'); title('imaginary part of signal'); Ερωτήσεις Θεωρήστε της ακολουθίες x1(n)={4,3,2,1,2,3,4} και x2(n)={1,1,1,0,-1,-1,-1}. Ποια από τις δύο ακολουθίες περιλαµβάνει υψηλότερο συνολικό περιεχόµενο (µεγαλύτερες συχνότητες)
x1(n)={4,3,2,1,2,3,4} x2(n)={1,1,1,0,-1,-1,-1} clear all n=-3:3; m=length(n); k=-((m-1)/2):((m-1)/2); x1=[4 3 2 1 2 3 4]; x2=[1 1 1 0-1 -1-1]; y1=fft(x1); y1=fftshift(y1); y2=fft(x2); y2=fftshift(y2); subplot(4,1,1); stem(n,x1); grid minor xlabel('n'); title('original Signal x1'); subplot(4,1,2); stem(k,y1); grid minor xlabel('k'); title('fft Signal y1'); subplot(4,1,3); stem(n,x2); grid minor xlabel('n'); title('original Signal x2'); subplot(4,1,4); stem(k,y2); grid minor xlabel('k'); title('fft Signal y2'); LOGO
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ εργαστήριο Αλέξανδρος Α. Λαζαρίδης ιδάκτωρ Ηλεκτρολόγος Μηχανικός LOGO και Μηχανικός Υπολογιστών Βασισµένες στις Σηµειώσεις Εργαστηρίου Ψηφιακής Επεξεργασίας Σήµατος ( ρ. Ηλίας Κίτσας Σέρρες 2010)
9 η Ενότητα Υπολογισµός συνέλιξης µέσω DFT 2
Υπολογισµός συνέλιξης µέσω DFT
Υπολογισµός συνέλιξης µέσω DFT x=[5 3 8 2 6]; 4 y=[7 2 9 1 8 3 6]; z=conv(x,y); L=length(x)+length(y)-1; xx=fft(x,l); yy=fft(y,l); zz=xx.*yy; zdft=ifft(zz); subplot(3,1,1) stem(z); title('convolution by definition'); subplot(3,1,2) stem(zdft); title('convolution by DFT'); subplot(3,1,3) stem(z-zdft); title('computation error');
Άσκηση Στο διάστηµα [-10,10] ορίζονται τα σήµατα x(n)=0.5*n*[u(n)-u(n-6)] και h(n)=2*sin(nπ/2)*[u(n+3)-u(n-4)] Να υπολογιστεί η συνέλιξη των δύο σηµάτων απευθείας και µε χρήση DFT 5
L=length(x)+length(h)-1; n2=[-20:20]; X=fft(x,L); H=fft(h,L); Y=X.*H; y2=ifft(y,l); subplot(4,1,1), stem(n,x), grid minor, title('x(n)') subplot(4,1,2), stem(n,h), grid minor, title('h(n)') subplot(4,1,3), stem(n,y), grid minor, title('y(n)=x(n)*h(n)') subplot(4,1,4), stem(n2, y2), grid minor, title('ifft') Άσκηση N=10; % orizoume to diasthma endiaferontos [-N,N] n=[-n:n]; %x(n)=0.5*n*[u(n)-u(n-6)] u0=zeros(1,2*n+1); u0(1,(n+1):end)=1; um6=zeros(1,2*n+1); um6(1,(n+1)+6:end)=1; % xwris xrisi tis for x=0.5*n.*(u0-um6); for i=1:size(n,2) x(1,i)=0.5*n(1,i)*(u0(1,i)-um6(1,i)); end %h(n)=2*sin(nπ/2)*[u(n+3)-u(n-4)] up3=zeros(1,2*n+1); up3(1,(n+1)-3:end)=1; um4=zeros(1,2*n+1); um4(1,(n+1)+4:end)=1; %h=2*sin(n*pi/2).*(up3-um4); for i=1:size(n,2) h(1,i)=2*sin(n(1,i)*pi/2)*(up3(1,i)-um4(1,i)); end y=convn(x,h,'same'); 6
LOGO
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΙ ΣΕΡΡΩΝ εργαστήριο Αλέξανδρος Α. Λαζαρίδης Διδάκτωρ Ηλεκτρολόγος Μηχανικός LOGO και Μηχανικός Υπολογιστών Βασισμένες στις Σημειώσεις Εργαστηρίου Ψηφιακής Επεξεργασίας Σήματος (Δρ. Ηλίας Κίτσας Σέρρες 2010)
10 η Ενότητα Υπολογισμός ευθύ και αντίστροφου μετασχηματισμού Z Υπολογισμός μερικών κλασμάτων Συνάρτηση μεταφοράς Ευστάθεια Απόκριση συστημάτων 2 Δρ. Λαζαρίδης Αλέξανδρος
Υπολογισμός ευθύ και αντίστροφου μετασχηματισμού Z Δρ. Λαζαρίδης Αλέξανδρος
Υπολογισμός ευθύ και αντίστροφου μετασχηματισμού Z Το πρώτο αποτέλεσμα είναι ο μετασχηματισμός Z της x(n). Το δεύτερο αποτέλεσμα είναι o αντίστροφος μετασχηματισμός Z της H(z). Η συνάρτηση syms z ορίζει την μεταβλητή z ως συμβολική. Η συνάρτηση ztrans(x) υπολογίζει το μετασχηματισμό Z της x. Η συνάρτηση pretty(x) μετατρέπει την παράσταση x σε μια πιο ευπαρουσίαστη μορφή. Η συνάρτηση iztrans(h) υπολογίζει τον αντίστροφο μετασχηματισμό Z της H. %Forward Z-transform clear; syms n z; x=2^n+3*(1/2)^n; X=ztrans(x, n, z); pretty(x) %Inverse Z-transform clear; syms z; H=(2*z^2+7*z)/(z^2+z-2); h=iztrans(h); pretty(h); 4 Δρ. Λαζαρίδης Αλέξανδρος
Δρ. Λαζαρίδης Αλέξανδρος
Υπολογισμός μερικών κλασμάτων 6 Δρ. Λαζαρίδης Αλέξανδρος
Υπολογισμός μερικών κλασμάτων %Residue computation b = [2 7 0]; a = [1 1-2]; [r1,p1,k1]=residue(b,a) [r2,p2,k2]=residuez(b,a) 7 Δρ. Λαζαρίδης Αλέξανδρος
b = [2 7 1]; a = [1 0-2]; [r1,p1,k1]=residue(b,a) [r2,p2,k2]=residuez(b,a) 8 Δρ. Λαζαρίδης Αλέξανδρος
Συνάρτηση μεταφοράς Ευστάθεια θα ορίσουμε την συνάρτηση μεταφοράς σε MATLAB, θα βρούμε τους πόλους και τα μηδενικά του συστήματος τα οποία θα τα σχεδιάσουμε μαζί με τον μοναδιαίο κύκλο και θα ελέγξουμε αν το σύστημα είναι η όχι ευσταθές 9 Δρ. Λαζαρίδης Αλέξανδρος
Συνάρτηση μεταφοράς Ευστάθεια %define transfer function X(z) as tf-object H1=tf([2 7 0],[1 1-2],1) H2=filt([2 7 0],[1 1-2]) pol=pole(h1) zer=zero(h1) pzmap(h1) H(z) ως συνάρτηση μεταφοράς (transfer function) το ένα με θετικές δυνάμεις του z ενώ το άλλο με αρνητικές δυνάμεις του z. Η γραφική παράσταση μας δείχνει που βρίσκονται τα μηδενικά (o) και οι πόλοι (x) σε σχέση με τον μοναδιαίο κύκλο. Η συνάρτηση H1=tf([2 7 0],[1 1-2],1) δημιουργεί την H(z) ως συνάρτηση μεταφοράς με θετικές δυνάμεις του z με ορίσματα σε πίνακες τους συντελεστές του αριθμητή, τους συντελεστές του παρανομαστή και το 1 για διακριτά συστήματα. Η συνάρτηση H2=filt([2 7 0],[1 1-2]) δημιουργεί την H(z) ως συνάρτηση μεταφοράς με αρνητικές δυνάμεις του z με ορίσματα σε πίνακες τους συντελεστές του αριθμητή και τους συντελεστές του παρανομαστή. Η συνάρτηση pzmap(h1) μας επιστρέφει την γραφική παράσταση των πόλων και των μηδενικών σε σχέση με τον μοναδιαίο κύκλο. Με τη βοήθεια αυτής της εντολής έχουμε την δυνατότητα να καταλάβουμε εάν το σύστημα είναι ευσταθές ή όχι. Για να είναι ευσταθές θα πρέπει οι πόλοι να βρίσκονται μέσα στον κύκλο. 10 Δρ. Λαζαρίδης Αλέξανδρος
Απόκριση συστημάτων θα σχεδιάσουμε την απόκριση του συστήματος για διάφορες εισόδους step(h1,5); impulse(h1,5); t=0:10*pi; u=sin(t); lsim(h1,u,t); 11 Δρ. Λαζαρίδης Αλέξανδρος
LOGO