Καταχώρηση τιµής σε µια µεταβλητή. Απευθείας καταχώρηση >> a=si(pi/2) a = 1 Αν στο τέλος κάθε δήλωσης τοποθετείται το ερωτηµατικό τότε το πρόγραµµα δεν µας δείχνει τη τιµή της µεταβλητής. >> a=si(pi/2); Αν ενδιαφερόµαστε να µάθουµε τις ενεργές µεταβλητές τότε χρησιµοποιούµε την εντολή who >> who Your variables are: a b c d e Αν ενδιαφερόµαστε να µάθουµε την τιµή της τότε πληκτρολογούµε τη µεταβλητή στο περιβάλλον του προγράµµατος. >> a = 1 Μπορούµε να καταχωρήσουµε τιµή σε µια µεταβλητή µε την χρήση µεταβλητών. >> a=50; >> b=12; >> c=15; >> d=cos(pi/3); >> e=(a+b-c)*d; 1
Μορφή των µεταβλητών. Προκαθορισµένη µορφή. Είναι η µορφή που χρησιµοποιεί αυτόµατα το πρόγραµµα. Περιέχει τα πέντε πιο σηµαντικά ψηφία ενός πραγµατικού αριθµού. >> pi as = 3.1416 Μορφή log. Με αυτή τη µορφή µπορούµε να δούµε την τιµή µιας µεταβλητής µε µεγαλύτερη ακρίβεια βάζοντας την εντολή format log πριν ζητήσουµε από το πρόγραµµα να µας δώσει την τιµή της µεταβλητής >> format log >> pi as = 3.14159265358979 2
Επιστηµονική µορφή. Με αυτή τη µορφή µπορούµε να δούµε την εκθετική µορφή µιας µεταβλητής βάζοντας την εντολή format short e ή την εντολή format log e πριν ζητήσουµε από το πρόγραµµα να µας δώσει την τιµή της µεταβλητής. >> format short e >> pi as = 3.1416e+000 >> format log e >> pi as = 3.141592653589793e+000 Μορφή bak. Χρησιµοποιούµε την µορφή αυτή όταν χρειαζόµαστε µόνο δύο µηδενικά. Έτσι πριν ζητήσουµε την τιµή της µεταβλητής βάζουµε την εντολή format bak. >> format bak >> pi as = 3.14 Για να επιστρέψουµε στην κανονική µορφή γράφουµε την εντολή format. 3
Απλές γραφικές παραστάσεις. Χρησιµοποιώντας τη συνάρτηση plot(x,t) µπορούµε να κάνουµε τη γραφική παράσταση της µεταβλητής x σε συνάρτηση µε τη µεταβλητή t. Θα πρέπει οι δύο µεταβλητές να έχουν το ίδιο αριθµό τιµών. Η γραφική παράσταση της συνάρτησης x = si(2 π f t) για τιµές του χρόνου από µηδέν έως 0,05 µε βήµα 0,0001 και για συχνότητα f = 100 Hz πραγµατοποιείται ως >> f=100; >> t=0:0.0001:0.05; >> x=si(2*pi*f*t); >> plot(t,x) Μπορούµε να κάνουµε ταυτόχρονη γραφική παράσταση δύο συναρτήσεων x και y των οποίων η ανεξάρτητη µεταβλητή t να είναι κοινή χρησιµοποιώντας την εντολή plot(t,x,t,y) 4
Υπάρχει η δυνατότητα να έχουµε περισσότερες από µία γραφικές παραστάσεις στην οθόνη χρησιµοποιώντας τη subplot(m,,p). Αν χρησιµοποιήσετε την εντολή help subplot στο περιβάλλον του προγράµ- µατος θα δείτε τη σηµασία των παραµέτρων m, και p Μπορούµε επιπλέον να τοποθετήσουµε και τίτλο στη γραφική παράσταση µε τη βοήθειατης title( ) Χρησιµοποιώντας τη xlabel( ) και ylabel( αντίστοιχες µεταβλητές στους άξονες ) τοποθετούµε και τις Με τη βοήθεια της axis( [xmi xmax ymi ymax] ) καθορίζεται η βαθµολογία των αξόνων Σηµειώνεται ότι η εντολή help ισχύει για κάθε εντολή. Στο πρόγραµµα που ακολουθεί κάνει τις γραφικές παραστάσεις του ηµίτονου και του συνηµίτονου σε συνάρτηση µε το χρόνο 5
figure(1); clf t=0:0.0001:0.05; x=si(2*pi*100*t); y=0.5*cos(2*pi*300*t); subplot(2,1,1), plot(t,x); title('γραφική παράσταση ηµιτόνου') axis([0,0.05,-1,1]); xlabel('t'); ylabel('si(2πft)'); subplot(2,1,2), plot(t,y); title('γραφική παράσταση συνηµιτόνου') axis([0,0.05,-1,1]); xlabel('t'); ylabel('cos(2πft)'); Η figure(1); clf καθαρίζει την εικόνα 1. Είναι καλό πριν από κάθε νέα εικόνα να χρησιµοποιείται. Αν θέλουµε να διαγράψουµε όλες τις εικόνες χρησιµοποιούµε την close all, είναι καλό να χρησιµοποιείται στην αρχή κάθε προγράµµατος. Τοποθετούµε % όταν θέλουµε να κάνουµε σχόλια. Η clc καθαρίζει την επιφάνεια εργασίας. 6
Βασικοί τρόποι εισαγωγής δεδοµένων Οι δύο βασικότεροι µέθοδοι εισαγωγής δεδοµένων είναι: Στον editor του προγράµµατος. Η µέθοδος αυτή χρησιµοποιείται στις περιπτώσεις που έχουµε να κάνουµε πράξεις µε λίγες γραµµές κώδικα. Σηµειώνεται ότι µέχρι τώρα όλα τα παραδείγµατα έχουν γίνει στο editor του Matlab. Στον M-file editor του Matlab ο οποίος µας δίνει τη δυνατότητα να δηµιουργούµε απόαπλέςσειρέςεντολώνµέχρικαικώδικαπρογραµµατισµού. 7
Ενεργοποίηση του M-file. Για να ενεργοποιήσουµε τον M-file editor κάνουµε τα βήµατα: Πηγαίνουµε στην επιλογή file έπειτα => ew και τέλος στη επιλογή => M-file Αποθήκευση. Αποθηκεύσουµε το M-file µε τη γνωστή διαδικασία: File => Save workspace As... χρησιµοποιώντας την προτεινόµενη από το πρόγραµµα επέκταση (format) για τα αρχεία πουδηµιουργούµεστον M-file editor Εκτέλεση αρχείων M-file. Τέλος για να εκτελέσουµε τον κώδικα από ένα αρχείο M-file, καλούµε το αρχείο γράφοντας απλά το όνοµά του στο βασικό editor του Matlab. Σηµειώνεταιότιγιαναεντοπίσειαλλάκαιναεκτελέσειτο M-fileαρχείοθαπρέπεινα είναι αποθηκευµένο στο κατάλογο work του Matlab 8
Μερικές εντολές εισόδου-εξόδου και ελέγχου. Το Matlab µας δίνει τη δυνατότητα βρόχων επαναλήψεων µε εντολές όπως for και ελέγχου ροής χρησιµοποιώντας εντολές ελέγχου όπως if και while. Ο χρήστης µπορεί να εισάγει µία τιµή σε µεταβλητή από το πληκτρολόγιο χρησιµοποιώντας την εντολή iput. Η σύνταξη της εντολής είναι (µεταβλητή) = iput ( µήνυµα προς τον χρήστη ) Οχρήστηςµπορείναεξάγειµηνύµαταστηοθόνηµετηβοήθειατηςεντολή disp. Η σύνταξη της εντολής είναι disp( µήνυµα προς τον χρήστη ) Ο χρήστης µπορεί να εξάγει χαρακτήρες και τιµές µεταβλητών προς το εξωτερικό περιβάλλον µε τη βοήθεια της εντολή aswer. Η σύνταξη της εντολής είναι aswer[ χαρακτήρες µεταβλητή] 9
Στο πρόγραµµα που ακολουθεί εµφανίζονται στη οθόνη οι περιττοί αριθµοίαπό 1 έως 7 for x=1:2:7; x ed Στο πρόγραµµα που ακολουθεί εµφανίζεται στη οθόνη το άθροισµα των τετραγώνων των περιττών αριθµών από 1 έως 7 x=1; s=0; while x<=7 s=s+x^2; x=x+2; ed s Το πρόγραµµα που ακολουθεί δέχεται έναν αριθµό και επιστρέφει την τετραγωνική του ρίζα % Εύρεση τετραγωνικής ρίζας umber=iput(' ώστε τον αριθµό '); umber=sqrt(umber); aswer=['η τετραγωνική ρίζα του αριθµού είναι']; disp(aswer) disp(umber) 10
Προγραµµατισµός συνάρτησης Το Matlab µας δίδει τη δυνατότητα να γράψουµε (προγραµµατίσουµε) συναρτήσεις τις οποίες µπορούµε στη συνέχεια να τις χρησιµοποιήσουµε σε διάφορες θέσεις ενός προγράµµατος εισάγοντας µόνο δεδοµένα. Οι συναρτήσεις είναι τύπου M-file µε τη διαφορά ότι αρχίζουνε µε τη δήλωση fuctio Η συνάρτηση που ακολουθεί βρίσκει τις ρίζες ενός τριώνυµου fuctio [r1,r2]=rizes(a,b,c) % a είναι ο συντελεστής του δευτεροβάθµιου όρου % b είναι ο συντελεστής του πρωτοβάθµιου όρου % c είναι ο γνωστός όρος % r1 και r2 είναι οι ρίζες του τριωνύµου %----------------------------------------- diak=b^2-4*a*c; r1=(-b+sqrt(diak))/(2*a); r2=(-b-sqrt(diak))/(2*a); if diak>=0 disp('οι ρίζες είναι πραγµατικές') else disp('οι ρίζες είναι µιγαδικές') ed 11
Αφού αποθηκεύσετε το M-file µε όνοµα rizes.m µε το γνωστό τρόπο στο κατάλογο work του Matlab παρατηρήστε τι θα πάρετε αν γράψετε help rizes στον editor του Matlab. Αν στη συνέχεια γράψετε [r1,r2] = rizes(1,-3,2) χωρίς ερωτηµατικό θα πάρετε >> [r1,r2]=rizes(1,-3,2) r1 = 2.00 r2 = 1.00 Ενώ αν γράψετε [r1,r2]=rizes(1,-3,2); µε ερωτηµατικό θα πρέπει στη συνέχεια να γράψετε [r1,r2] για να δείτε τις ρίζες. >> [r1,r2]=rizes(1,-3,2); >> [r1,r2] as = 2.00 1.00 Παρατηρούµε ότι η συνάρτηση επιστρέφει ένα διάνυσµα µε δύο στοιχεία τις ρίζες του τριωνύµου. 12
Αποθήκευση δεδοµένων σε δυαδικό αρχείο. Το MATLAB έχει τη δυνατότητα να αποθηκεύουµε αποτελέσµατα σε δυαδικά αρχεία µε την εντολή save. Η σύνταξη της εντολής είναι save [όνοµα αρχείου.mat][δεδοµένα] Αν θέλουµε να αποθηκεύσουµε τις ρίζες του τριωνύµου που βρήκαµε τότε γράφουµε >> r=[r1,r2]; >> save rizes.mat r Φορτώνουµε τα δεδοµένα από ένα δυαδικό αρχείο µε την εντολή load. Η σύνταξη της εντολής είναι load [όνοµα αρχείου] 13
Με τη βοήθεια της εντολής fpritf είναι δυνατή η αποθήκευση δεδοµένων σε εξωτερικά αρχεία. Περισσότερες πληροφορίες µπορείτε να πάρετε αν χρησιµοποιήσετε την εντολή help fprit. Με το πρόγραµµα που ακολουθεί δηµιουργείται ένα αρχείο µε όνοµα exp.txt στο οποίο έχουν γραφεί οι αριθµοί από 0 µέχρι 1 µε βήµα 0,1 και οι αντίστοιχοι exp(x). x = 0:.1:1; y = [x; exp(x)]; fid = fope('exp.txt','w'); fpritf(fid,'%6.2f %12.8f\',y); fclose(fid); Το περιεχόµενο του exp.txt 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183 14
ΣΗΜΑΤΑ ΙΑΚΡΙΤΟΥ ΧΡΟΝΟΥ Ένα διακριτό σήµα δηλώνεται µε x(), όπου η µεταβλητή λαµβάνει ακέραιες τιµές καιπαριστάνειδιακριτέςχρονικέςστιγµές. { x ( ) } = K, x ( 1), x (0), (1), K x ( ) = x Στο MATLAB µπορούµε να παραστήσουµε µια πεπερασµένης διάρκειας ακολουθία µε έναδιάνυσµαγραµµή. >> = [ 3, 2, 1,0,1,2,3]; >> x = [7, 5, 1,3,4,6,9]; 15
Χρησιµοποιώντας τη συνάρτηση stem(,x) µπορούµε να κάνουµε τη γραφική παράσταση της ακολουθίας x. Υπάρχει η δυνατότητα να έχουµε περισσότερες από µία γραφικές παραστάσεις στην οθόνη χρησιµοποιώντας τη subplot(m,,p). Μπορούµε επιπλέον να τοποθετήσουµε και τίτλο στη γραφική παράσταση µε τη βοήθεια της title( Ακολουθία x() ) Χρησιµοποιώντας τη xlabel( ) και ylabel( δ() ) τοποθετούµε και τις αντίστοιχες µεταβλητές στους άξονες Με τη βοήθεια της axis( [xmi xmax ymi ymax] ) καθορίζεται η βαθµολογία των αξόνων 16
Το µοναδιαίο δείγµα Κρουστική ακολουθία 1, δ ( 0 ) = 0, = Με τη συνάρτηση impseq, χρησιµοποιώντας τη λογική σχέση == 0, δηµιουργούµε µια κρουστική ακολουθία στο διάστηµα 1 0 2 fuctio [x,] = impseq(0,1,2) if ((0 < 1) (0 > 2) (1 > 2)) error( Τα δεδοµένα πρέπει να ικανοποιούν την 1 <= 0 <= 2') ed = [1:2]; x = [(-0) == 0]; Μπορούµε να χρησιµοποιήσουµε και τη συνάρτηση zeros(1,n) η οποία δηµιουργεί διάνυσµα γραµµή µε Ν µηδενικά. fuctio [x,] = impseq(0,1,2) if ((0 < 1) (0 > 2) (1 > 2)) error( Τα δεδοµένα πρέπει να ικανοποιούν την 1 <= 0 <= 2') ed = [1:2]; x = [zeros(1,(0-1)), 1, zeros(1,(2-0))]; 17 0 0
Μοναδιαία βηµατική ακολουθία u ( 0 1, ) = 0, < Με τη συνάρτηση stepseq, χρησιµοποιώντας τη λογική σχέση >= 0, δηµιουργούµε µια κρουστική ακολουθία στο διάστηµα 1 0 2 fuctio [x,] = stepseq(0,1,2) if ((0 < 1) (0 > 2) (1 > 2)) error( Τα δεδοµένα πρέπει να ικανοποιούν την 1 <= 0 <= 2') ed = [1:2]; x = [(-0) >= 0]; Μπορούµε να χρησιµοποιήσουµε και τη συνάρτηση oes(1,n) η οποία δηµιουργεί διάνυσµα γραµµή µε Ν µονάδες. fuctio [x,] = impseq(0,1,2) if ((0 < 1) (0 > 2) (1 > 2)) error( Τα δεδοµένα πρέπει να ικανοποιούν την 1 <= 0 <= 2') ed = [1:2]; x = [zeros(1,(0-1)), oes(1,(2-0+1))]; 18 0 0
Παράδειγµα 1 figure(1); clf 1=-10; 2 = 20; 0=0; [x,]=impseq(0,1,2); subplot(2,1,1), stem(,x); title( Κρουστική ακολουθία') axis([-20,30,-1,2]); xlabel(''); ylabel( d()'); Παράδειγµα 2 %figure(1); clf 1=-10; 2 = 20; 0=0; [y,]=stepseq(0,1,2); subplot(2,1,2), stem(,x); title( Βηµατική ακολουθία') axis([-20,30,-1,2]); xlabel(''); ylabel( h()'); 19
Πραγµατική εκθετική ακολουθία x ( ) = a, ; a R Στο MATLAB µε τη βοήθεια της πράξης µεταξύ διανυσµάτων.^ δηµιουργούµε πραγµατική εκθετική ακολουθία πεπερασµένης διάρκειας. Για παράδειγµα η πραγµατική εκθετική ακολουθία δηµιουργείται από τις εντολές Μιγαδική εκθετική ακολουθία x ( ) = (0,8), 0 x ( ) = >> = [0:20]; x= (0.8).^; e ( σ+ jω0 ) όπου σ ονοµάζεται εξασθένιση και Ω 0 είναι η διακριτή συχνότητα σε rad. Χρησιµοποιούµε τη συνάρτηση exp για να παράγουµε µιγαδική εκθετική ακολουθία. Η µιγαδική εκθετική ακολουθία, 20 δηµιουργείται από τις εντολές x ( ) = e (3+ j2), 0 20 >> = [0:20]; x= exp((3+ 2*j)*); 20
Ηµιτονοειδής ακολουθία x ) ( 0 = si ( Ω + φ), όπου φ η φάση σε rad. Χρησιµοποιούµε τη συνάρτηση si (ή cos) για να παράγουµε ηµιτονοειδή ακολουθία. Η ηµιτονοειδής ακολουθία x ( ) = 2cos(0,1π π / 2) + 0,8si (0,3 π ), 0 < 40 δηµιουργείται από τις εντολές >> = [0:39]; x= 2*cos(0.1* pi*- pi/2) + 0.8*si(0.3* pi*) Τυχαίες (στοχαστικές) ακολουθίες Στο MATLAB υπάρχουν δύο συναρτήσεις που παράγουν (ψευδο-)τυχαίες ακολουθίες. Η rad(1,n) η οποια δηµιουργεί µια τυχαία ακολουθία µήκους Ν µε στοιχεία τα οποία είναι οµοιόµορφα κατανεµηµένα στο διάστηµα [0,1]. Η rad(1,n)ηοποιαδηµιουργείµια Gaussia τυχαίαακολουθίαµήκουςνµεµέσητιµή 1 και διακύµανση επίσης 1. 21
Περιοδικές ακολουθίες Μία ακολουθία x() είναι περιοδική αν x(+n) = x() για κάθε. Η µικρότερη τιµή του Ν ονοµάζεται θεµελιώδης περίοδος. Μια περιοδική ακολουθία θα δηλώνεται ως ~ x ( ). Για να σχηµατίσουµε P περιόδους της ~ x ( ) από µία περίοδο x ( ), 0 N 1, µπορούµε να αντιγράψουµετην x() P φορές. >> xtilde= [x,x, Kx]; Μιαάλληµέθοδοςείναι. Νασχηµατίσουµεέναπίνακαπουπεριέχει Pγραµµέςόπουταστοιχείακάθεγραµµήςείναι x(), >> xtilde = x'*oes(1,p); %P στήλες του x, x είναι διάνυσµα γραµµή; στησυνέχειαµετηβοήθειατου (:)ναµετατρέψουµετις P γραµµέςσεένα µεγάλο διάνυσµα στήλη >> xtilde= xtilde(:); % Μεγάλο διάνυσµα στήλη; και τέλος να αντιστρέψουµε το διάνυσµα στήλη >> xtilde = xtilde'; % Μεγάλο διάνυσµα στήλη; 22
Παράδειγµα 3 figure(1); clf % Παράδειγµα 3 =[0:20]; % Πραγµατική εκθετική ακολουθία x1=(0.8).^; subplot(2,1,1), stem(,x1,'k') title('πραγµατική εκθετική ακολουθία') xlabel('') ylabel('x()') % Μιγαδική εκθετική ακολουθία x2=exp((-0.1+0.2*pi*j)*); subplot(2,1,2), stem(,real(x2),'k') title( Πραγµατικό µέρος της µιγαδικής εκθετικής ακολουθίας') xlabel('') ylabel('x()') 23
figure(1); clf =[0:19]; % Ηµιτονοειδής ακολουθία x1=2*si(0.2*pi*+pi/6)+cos(0.5*pi*); subplot(3,1,1), stem(,x1,'k') title('ηµιτονοειδής ακολουθία') xlabel('') ylabel('x()') % Τυχαία ακολουθία N=20; x2=rad(1,n); subplot(3,1,2), stem(,x2,'k') title('τυχαία ακολουθία') xlabel('') ylabel('x()') % Περιοδική Ακολουθία x=[4 3 2 1 0]; P=4; xtilde=x'*oes(1,p); xtilde=xtilde(:); xtilde=xtilde'; subplot(3,1,3), stem(,xtilde,'k') title('περιοδική Ακολουθία') xlabel('') ylabel('x()') Παράδειγµα 4 24
Πρόσθεση ακολουθιών Πράξεις µεταξύ ακολουθιών Ηπρόσθεσηδύοακολουθιώνµετοίδιοµήκοςγίνεταιµετηβοήθειατης + µετηνεντολή >> x = x1+ x2; Στη συνέχεια παρουσιάζεται η συνάρτηση sigadd η οποία βρίσκει το άθροισµα δύο ακολουθιών που είτε έχουν το ίδιο µήκος είτε όχι. Η συνάρτηση έχει είσοδο τηνακολουθία x 1 ( 1 ),.. 1,mi 1 1,max καιτηνακολουθία x 2 ( 2 ), 2,mi 2 2, max καιεπιστρέφειτοάθροισµατους y(), όπου = mi(, ) και = mi(, ) mi max mi 1,mi 2, mi fuctio [y,] = sigadd(x1,1,x2,2) % y = το άθροισµα των ακολουθιών στο διάστηµα % x1 = η πρώτη ακολουθία στο διάστηµα 1 % x2 = η δεύτερη ακολουθία στο διάστηµα 1 = mi(mi(1),mi(2)):max(max(1),max(2));%η διάρκεια της y() y1 = zeros(1,legth()); y2 = y1; y1(fid((>=mi(1))&(<=max(1))==1))=x1; % x1 µε διάρκεια y2(fid((>=mi(2))&(<=max(2))==1))=x2; % x2 µε διάρκεια y = y1+y2; % Η ακολουθία του αθροίσµατος 25 max 1,max 2, max
Η συνάρτηση fid (fid idices of ozero elemets) επιστρέφει τις θέσεις των στοιχείων του διανύσµατος x οι οποίες είναι µη-µηδενικές. Για παράδειγµα =fid(x>100) επιστρέφει τις θέσεις όπου x()>100. >> x = [2 4 6 3 7 1 9 5 8]; >> fid(x>5) as = 3 5 7 9 Ο τελεστής & είναι ο τελεστής του λογικού ΑND. Μπορείτε µε τη εντολή help arith ή help relog και help slase να δείτε τους αριθµητικούς τελεστές, λογικούς τελεστές και τους. τελεστές πράξεων µεταξύ πινάκων x=[1,2]; x=[0,1]; y=[5,6]; y=[3,4]; [z,] = sigadd(x,x,y,y) 26
Πολλαπλασιασµός ακολουθιών Ο πολλαπλασιασµός δύο ακολουθιών µε το ίδιο µήκος γίνεται µε τη βοήθεια της.* µε την εντολή >> x=x1.*x2; Στη συνέχεια παρουσιάζεται η συνάρτηση sigmult η οποία βρίσκει το γινόµενο δύο ακολουθιών που είτε έχουν το ίδιο µήκος είτε όχι. Η συνάρτηση έχει είσοδο τηνακολουθία x 1 ( 1 ),.. 1,mi 1 1,max καιτηνακολουθία x 2 ( 2 ), 2,mi 2 2, max καιεπιστρέφειτογινόµενό τους y(), όπου = mi(, ) και = mi(, ) mi max mi 1,mi 2, mi fuctio [y,] = sigmult(x1,1,x2,2) % y = το άθροισµα των ακολουθιών στο διάστηµα % x1 = η πρώτη ακολουθία στο διάστηµα 1 % x2 = η δεύτερη ακολουθία στο διάστηµα 1 = mi(mi(1),mi(2)):max(max(1),max(2));%η διάρκεια της y() y1 = zeros(1,legth()); y2 = y1; y1(fid((>=mi(1))&(<=max(1))==1))=x1; % x1 µε διάρκεια y2(fid((>=mi(2))&(<=max(2))==1))=x2; % x2 µε διάρκεια y = y1.*y2; % Η ακολουθία του γινοµένου 27 max 1,max 2, max
Χρονική µετατόπιση y ( ) = { x ( k ) } Παρατηρούµε ότι στη χρονική ολίσθηση το διάνυσµα x δεν µεταβάλλεται αλλά το διάνυσµα µεταβάλλεται προσθέτοντας k σε κάθε στοιχείο του. Η συνάρτηση sigshift µετατοπίζει χρονικά ένα σήµα. fuctio [y,] = sigshift(x,m,0) % x = η ακολουθία εισόδου στο διάστηµα m % y = η χρονικά µετατοπισµένη κατά 0 ακολουθία = m+0; y = x; Ανάκλαση y ( ) = { x( ) } Η ανάκλαση ενός σήµατος γίνεται µε τη συνάρτηση sigfold, η οποία χρησιµοποιεί τη συνάρτηση fliplr(x). fuctio [y,] = sigfold(x,) % x = η ακολουθία εισόδου στο διάστηµα % y = η ανάκλαση της ακολουθίας εισόδου y = fliplr(x); = -fliplr();» x=[1 2 3 4];» fliplr(x) as = 4 3 2 1 28
Παράδειγµα 5 figure(1); clf m=[-20:1:22]; x=[zeros(1,20),6:-1:1,0:2:28,zeros(1,2)]; subplot(3,1,1), stem(m,x,'k') axis([-20,26,0,30]); [y1,]=sigshift(x,m,4); subplot(3,1,2), stem(,y1,'k') axis([-20,26,0,30]); [y2,]=sigfold(x,m); subplot(3,1,3), stem(,y2,'k') axis([-20,26,0,30]); 29
30 Άθροισµα των όρων ακολουθίας ) ( ) ( ) ( 2 1 2 1 x x x + + = = K Με τη συνάρτηση sum(x(1:2)) προδιορίζουµε το άθροισµα των όρων της ακολουθίας x Η ενέργεια µιας ακολουθίας από τη = = x x x x E 2 * ) ( ) ( ) ( Η ισχύς µιας περιοδικής ακολουθίας δίνεται από τη = = 1 0 2 ) ( 1 N x x N P x=[1 2 3 4]; Ex=sum(x.*coj(x)); Ex=sum(abs(x).^2); Γινόµενο των όρων ακολουθίας ) ( ) ( ) ( 2 1 2 1 x x x = = K Με τη συνάρτηση prod(x(1:2)) προδιορίζουµε το άθροισµα των όρων της ακολουθίας x Παράδειγµα 6
Άρτια και Περιττά Σήµατα Ένα σήµα x() λέγεται άρτιο (ή παρουσιάζει άρτια συµµετρία αν x(-) = x(), - < <. Αντίθεταλέγεταιπεριττό (παρουσιάζειπεριττήσυµµετρία) αν x(-) = -x(), - < <. Κάθε πραγµατικό σήµα µπορεί να εκφραστεί ως άθροισµα ενός άρτιου x e (t) και ενός περιττού σήµατος x o (t), δηλαδή, x(t)=x e (t) + x o (t), όπου [ x ( ) + x ( )] x ( ) 1 2 e = Η ανάλυση ενός σήµατος γίνεται µε τη συνάρτηση eveodd fuctio [xe, xo, m] = eveodd(x,) if ay(imag(x) ~= 0) error ('x δεν είναι µια πραγµατική ακολουθία') ed m = -fliplr(); m1 = mi([m,]); m2 = max([m,]); m = m1:m2; m = (1)-m(1); 1 = 1:legth(); x1 = zeros(1,legth(m)); x1(1+m) = x; x = x1; xe = 0.5*(x + fliplr(x)); xo = 0.5*(x - fliplr(x)); 31
Παράδειγµα 7 = [-10:10]; x = *(stepseq(0,-10,10)-stepseq(10,-10,10)); [xe,xo,m] = eveodd(x,); subplot(1,1,1) subplot(3,1,1); stem(,x, k ); title('σήµα') xlabel(''); ylabel('x()'); axis([-10,10,0,1.2]) subplot(3,1,2); stem(m,xe, k ); title('περιττό µέρος') xlabel(''); ylabel('xe()'); axis([-10,10,0,1.2]) subplot(3,1,3); stem(m,xo, k ); title( Άρτιο µέρος') xlabel(''); ylabel('xe()'); axis([-10,10,-0.6,0.6]) 32
Ασκήσεις 1. Ναβρεθούνηακολουθίααυτοσυσχέτισης r xx (l) καιηακολουθίαδιασυσχέτισης r xy (l) γιατις ακόλουθες ακολουθίες x ( ) = (0,9), 0 20 y ( ) = (0,8), 20 0 2. ίνεταιηακολουθία x()πουέχειακολουθίααυτοσυσχέτισης r xx (l).μετηβοήθειατης x() σχηµατίζεται η ακολουθία y() = x() + α x(-k). Να βρεθεί η αναλυτική έκφραση της ακολουθίας αυτοσυσχέτισης r yy (l) σεσυνάρτησηµετη r xx (l)τοακαιτο k. Αν x() = cos(0,2π) + 0,5 cos(0,6π), α = 0,1και k = 50, ναβρεθούν 200 δείγµατατης συνάρτησης y() καιναβρεθείηακολουθίατηςαυτοσυσχέτηςτης. Απότην r yy (l) είναιδυνατόναπροσδιοριστούνοιποσότητεςακαι k. jω 0 3. Η µιγαδική εκθετική σειρά e ή η ηµιτονοειδής σειρά cos( Ω0 ) είναι περιοδική αν η Ω κανονικοποιηµένη συχνότητα 0 K F0 είναι ρητός αριθµός, δηλαδή, αν F όπου K και Ν 2π 0 = N είναι ακέραιοι αριθµοί. Να δηµιουργηθεί και να σχεδιαστεί να ακολουθία cos(0,3 π ), -20 20. Είναι η ακολουθία περιοδική; Ποια είναι η θεµελιώδης περίοδος; Εξετάζοντας τη γραφική παράσταση ποια ερµηνεία δίνεται για τους ακέραιους Κ και Ν; Ναδηµιουργηθείκαινασχεδιαστείναακολουθία cos(0,3 ), -20 20. Είναιηακολουθία περιοδική; Πως φαίνεται αυτό στη γραφική της παράσταση; 33