Παρακάτω παρουσιάζεται ένας τρόπος επίλυσης ενός παραδείγματος συνέλιξης δύο σημάτων, στο Mathematica.
Έστω ένα απλό παράδειγμα που μπορούμε να υπολογίσουμε εύκολα και με το χέρι.
Σήμα εισόδου : x( t ) = u( t - 3) - u( t - 7 )
Κρουστική Απόκριση συστήματος : h( t ) = u(t+2)-u(t-1)
Αρχικά πρέπει να ορίσουμε τις συναρτήσεις μας. Αυτό γίνεται με τις εξής εντολές:
x[t_] := UnitStep[t - 3] - UnitStep[t - 7];
Σημειώσεις
- Η ανάθεση γίνεται με := .
- Η μεταβλητή της συνάρτησης στην δήλωσή της πρέπει να έχει και κάτω παύλα (underscore). Με αυτό τον τρόπο δηλώνεται ότι το t είναι η ανεξάρτητη μεταβλητή της συνάρτησης.
- x[ t_ ] , σωστό
- x[ t ] , λάθος.
- Η UnitStep[] είναι η βηματική συνάρτηση στο Mathematica.
- Η εντολές είναι case sensitive, πράγμα που σημαίνει ότι UnitStep, unitStep, unitstep,UnItStEp είναι 4 διαφορετικές μεταβλητές , και μόνο για την πρώτη το Mathematica θα καταλάβει την βηματική συνάρτηση.
Shift + Enter .
Για να κάνουμε τώρα την γραφική παράσταση της συνάρτησης μας δίνουμε την εντολή :
Plot[ x[t], {t, -1, 8}, PlotRange -> {0, 3}, Filling -> Axis ]
(Shift + Enter)
x(t) = u(t-3)-u(t-7) |
- Το πρώτο όρισμα είναι η συνάρτησή μας. (εδώ x[t] )
- Το δεύτερο είναι ως προς ποιά μεταβλητή θα γίνει η γραφική παράσταση, και μεταξύ ποιών ορίων θα την υπολογίσουμε. Εδώ ως προς την μεταβλητή t και θα την υπολογίσουμε μεταξύ -1 και 8. {t,-1,8}
Σημειώσεις
- PlotRange->{ min, max } , καθορίζει μέχρι τί τιμές θα δείχνει ο άξονας y.
- Filling ->Axis, σκιαγραφεί το πεδίο μεταξύ της x(t) και του άξονα των χ, για καλύτερη εποπτική κατανόηση.
Ακολουθώντας ακόμα μια φορά τα ίδια βήματα ορίζουμε και την h(t).
h[ t_ ] := UnitStep[ t + 2 ] - UnitStep[ t - 1 ];
Plot[ h[t], {t, -4, 4}, PlotRange -> {0, 3}, Filling -> Axis ]
h(t)=u(t+2)-u(t-1) |
Για να δούμε την καθρεπτισμένη ως προς τον άξονα χ, h(t) , δηλαδή την h(-t).
Εκτελούμε
h(-t) |
Για να δούμε τις x(t) και h(-t) που χρειάζονται για την συνέλιξη δίνουμε την εντολή:
Plot[ {h[-t], x[t]}, {t, -2, 8}, PlotRange -> {0, 3}, Filling -> Axis ]
Σημειώση
Τώρα που θέλουμε να κάνουμε τη γραφική παράσταση πολλών συναρτήσεων, το πρώτο όρισμα είναι η λίστα των συναρτήσεων που δίνεται ώς εξής: {x1[t],x2[t],...xn[t]}, στην περίπτωσή μας έχουμε τις { h[-t], x[t] }.Τα υπόλοιπα παραμένου ίδια.
Ορίσαμε τις συναρτήσεις, κάναμε και τις γραφικές παραστάσεις, καιρός να προχωρίσουμε στη συνέλιξη που μας ενδιαφέρει.
Η συνέλιξη δύο συναρτίσεων υπολογίζεται με την συνάρτηση Convolve .
y[ s_ ] := Convolve[ x[t],h[t],t,s ]
τα πρώτα δύο ορίσματα είναι οι συναρτήσεις των οποίων θα υπολογίσουμε την συνέλιξη. Το τρίτο όρισμα είναι η μεταβλητή ως προς την οποία ολοκληρώνουμε και το τέταρτο η ανεξάρτητη μεταβλητή της συνέλιξης.
Επιδή θέλουμε το αποτέλεσμα της συνέλιξης (το οποίο θα είναι μία συνάρτηση) να το αναθέσουμε στην y(t), κάνουμε και την δήλωση/ανάθεση συνάρτησης
y[ s_ ].
Το αποτέλεσμα που παίρνουμε είναι
y[ s ] ->
(-8 + s) UnitStep[-8 + s] - (-5 + s) UnitStep[-5 + s] - (-4 + s) UnitStep[-4 + s] +(-1 + s) UnitStep[-1 + s]
Το οποίο ίσως εκ πρώτης όψεως φανεί κάπως ακαταλαβίστικο. Συνεπώς κάνουμε τη γραφική παράσταση για να δούμε τι ακριβώς έχουμε.
Plot[y[s], {s, -1, 11}, PlotRange -> {0, 4}, Filling -> Axis ]
y(t) = x(t)*h(t) |
Τελικά παρατηρούμε ότι είναι μια απλή συνάρτηση , και της μορφής που περιμέναμε εφόσων έχουμε δύο παλμούς.
Και τί μάθαμε?
Μάθαμε να ορίζουμε μιά συνάρτηση, να κάνουμε τη γραφική της παράσταση και με 3 μόνο εντολές να βρίσκουμε και την συνέλιξη δύο σημάτων.