THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Ψηφιακά Φίλτρα => Topic started by: Nerevar on April 10, 2014, 23:01:42 pm



Title: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Nerevar on April 10, 2014, 23:01:42 pm
Τόπικ για τη δεύτερη εργασία των ψηφιακών φίλτρων (2014)


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aloko on April 12, 2014, 22:29:37 pm
(Αν ασχολείται κάποιος) Τι παίζει με τα σφάλματα στο proof.m ?
DFT : 1.244156e-014
split output top bottom : 1.244156e-014
split input even odd : 1.288815e-014
done : 1.256074e-015

πρέπει και στο done να βγει σαν τα υπόλοιπα ?


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Neal on April 15, 2014, 01:01:19 am
Λογικά πρέπει να φτιάξεις τη σχέση που λέει στην εκφώνηση και να τη συγκρίνεις με το ys όπως στο script (fprintf). Το σφάλμα θα πρέπει να είναι στην ίδια τάξη (?) με το done.


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aloko on April 15, 2014, 01:04:15 am
Λογικά πρέπει να φτιάξεις τη σχέση που λέει στην εκφώνηση και να τη συγκρίνεις με το ys όπως στο script (fprintf). Το σφάλμα θα πρέπει να είναι στην ίδια τάξη (?) με το done.
Ναι το ξεδιάλυνα κι εγώ. Αν το σφάλμα είναι της τάξης του 10^-13 και κάτω είσαι μια χαρά. Εμένα κάπου εκεί μου βγήκε, όχι ίδιο πάντως με το "done".


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: ValmadiaN on April 15, 2014, 09:46:04 am
Είμαι ο μόνος που η συνάρτηση plant μου επιστρέφει ό,τι της δίνω ως είσοδο;  :D


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: anid on April 15, 2014, 16:01:57 pm
Κι εμένα το ίδιο :D


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Neal on April 15, 2014, 19:39:21 pm
x = cos(1:0.1:100);
d = plant(x);
plot([x' d'])

Δε βγάζει την είσοδο..


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: ValmadiaN on April 16, 2014, 00:21:07 am
x = cos(1:0.1:100);
d = plant(x);
plot([x' d'])

Δε βγάζει την είσοδο..

Έχεις δίκιο. Της έδινα εισόδους μικρού μήκους γι αυτό έπαιρνα έξοδο ίδια με την είσοδο. Ανακαλώ!   8))


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Neal on April 17, 2014, 18:24:03 pm
Στον block LMS πόσο παίρνουμε το kmax και το L; Κωλομάθημα σιχτίρ.


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: ValmadiaN on April 17, 2014, 21:47:45 pm
Στον block LMS πόσο παίρνουμε το kmax και το L; Κωλομάθημα σιχτίρ.

Στη σελίδα 10 του BlockLMS.pdf που υπάρχει στο ethmmy στο υλικό του μαθήματος στον φάκελο "Διαλέξεις"
αναφέρει :

"Choice of block size
In most application the block size is selected to be equal to the filter length L = M . It is a tradeoff of
the following drawbacks:
– For L > M the gradient is estimated using more data than the filter itself.
– For L < M the data in the current block is not enough to feed the whole tap vector, and consequently
some weights are not used."

Σε ότι αφορά την επιλογή του kmax είναι δικό σου θέμα. Δοκίμασε διάφορες τιμές και κράτησε κάποια για την οποία ο
αλγόριθμός σου θα προλαβαίνει να εντοπίσει τις τιμές των παραμέτρων. Για παράδειγμα, εάν επιλέξεις kmax = 5, κατά πάσα
πιθανότητα ο αλγόριθμος δε θα προλάβει να εντοπίσει τις σωστές τιμές των παραμέτρων.


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Neal on April 17, 2014, 22:05:39 pm
Ναι το είδα αυτό, οπότε L = 32; Ο αριθμός των w θεωρείται το filter length?

Επίσης δε θα πρέπει το kmax*L να είναι ίσο με το n (time steps) ?


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aloko on April 18, 2014, 14:50:42 pm
Υλοποιησε κανεις τον block lms ? Εχετε συγκλιση για μικρες τιμες του μ ? γιατι σε μενα συγκλινει για μ = 1000 πχ   :D


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Dimitris1989 on April 19, 2014, 11:55:03 am
Μόνο εγώ δεν κατάλαβα το πρώτο ερώτημα;

Στο proof.m υπολογίζει το DFT με 3 τρόπους. 1-με την fft, 2-συμφωνα με το 3ο μέρος της εξίσωσης που δίνεται, 3-σύμφωνα με το 4ο μέρος της εξίωσης που δίνεται
Τα αποτελέσματα των παραπάνω έχουν μικρές αποκλισεις.

Εμάς τι ακριβώς μας ζητάει να συμπληρώσουμε;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aloko on April 19, 2014, 18:24:33 pm
Μόνο εγώ δεν κατάλαβα το πρώτο ερώτημα;

Στο proof.m υπολογίζει το DFT με 3 τρόπους. 1-με την fft, 2-συμφωνα με το 3ο μέρος της εξίσωσης που δίνεται, 3-σύμφωνα με το 4ο μέρος της εξίωσης που δίνεται
Τα αποτελέσματα των παραπάνω έχουν μικρές αποκλισεις.

Εμάς τι ακριβώς μας ζητάει να συμπληρώσουμε;
Πρεπει να υλοποιησεις τα αθροισματα της 2ης γραμμης απο τον τυπο που σου δινει. Αν παρατηρησεις το done ειναι το ιδιο αλλα χρησιμοποιει την fft() της matlab. Ουσιαστικα θες σφαλμα της ταξης του 10^-13 η μικροτερο.


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: geo_pas on April 23, 2014, 16:49:13 pm
Έχει καταλάβει κανείς στο β) ερώτημα η αναδρομική συνάρτηση που θα καλείται κάθε φορά από τον εαυτό της τι θα υπολογίζει ακριβώς; Θα χωρίζει το αρχικό διάνυσμα σε 2, 4, 8, ... διανύσματα και θα υπολογίζει κάθε ένα ξεχωριστά, όπως και στο αρχείο fftproof.m που χωρίζει σε πάνω και κάτω μέρος το διάνυσμα;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Dimitris1989 on April 25, 2014, 18:02:14 pm
Υπολογίζω τα αθροίσματα όπως τα ζητάει. Αποθηκεύω ένα προηγούμενο y σε μια temp.
Συγκρίνω το y που υπολογίσα, με τα προηγούμενα και ενώ είναι ίδια (τουλάχιστον τα 4 δεκαδικα που δείχνει το matlab)
Αν κάνω y-temp έχει κάποιες διαφορές σε δεκαδικά που δε φαίνονται και το τελικό αποτέλεσμα προφανώς βγαίνει λάθος

Είναι σωστός ο τρόπος ή θέλει διόρθωση;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Silvo the Beautiful on April 28, 2014, 11:28:01 am
Μόνο εγώ δεν κατάλαβα το πρώτο ερώτημα;

Στο proof.m υπολογίζει το DFT με 3 τρόπους. 1-με την fft, 2-συμφωνα με το 3ο μέρος της εξίσωσης που δίνεται, 3-σύμφωνα με το 4ο μέρος της εξίωσης που δίνεται
Τα αποτελέσματα των παραπάνω έχουν μικρές αποκλισεις.

Εμάς τι ακριβώς μας ζητάει να συμπληρώσουμε;

έχω χαθεί που είναι αυτά τα μέρη των εξισώσεων;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Neal on April 28, 2014, 12:05:09 pm
Κάθε μέρος της ισότητας είναι μια απόδειξη. Αυτός χρησιμοποιεί όλους τους ορισμούς εκτός απ' τον τελευταίο με τους πίνακες όπου τον αποδεικνύει με το:

Code:
fe = fft(x((0:2:n-1) +1));
fo = fft(x((1:2:n-1) +1));

wfo = w(n, (0:n/2-1)') .* fo;
y = [fe + wfo; fe - wfo];

εσύ στην ουσία θέλεις να κάνεις το ίδιο αλλά χωρίς να χρησιμοποιήσεις την fft().

Για το blockLMS έχει κανείς ιδέα που σκατά κάνω λάθος;

Code:
for k=0:kmax-1
    fi = zeros(M, 1);
    
    for i=1:L

        y(k*L + i) = w'*u(i + k*L:1:k*L + M + i - 1);
        e(k*L + i) = d(k*L + i) - y(k*L + i);
        fi = fi + mu*e(k*L + i)*u(i + k*L:1:k*L + M + i - 1);

    end
    w = w+fi;
end


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: LordOdy on April 28, 2014, 14:05:51 pm

Για το blockLMS έχει κανείς ιδέα που σκατά κάνω λάθος;

Code:
for k=0:kmax-1
    fi = zeros(M, 1);
   
    for i=1:L

        y(k*L + i) = w'*u(i + k*L:1:k*L + M + i - 1);
        e(k*L + i) = d(k*L + i) - y(k*L + i);
        fi = fi + mu*e(k*L + i)*u(i + k*L:1:k*L + M + i - 1);

    end
    w = w+fi;
end

Νομίζω δεικτοδοτείς λάθος το u. Πρεπει να γράψεις:

Code:
u(k*M+i:-1:k*M+i-M+1)

Κάθε συντελεστης w πρέπει να πολλαπλασιάζεται με την αντίστοιχη προηγούμενη είσοδο, ενώ εσυ παίρνεις τις επόμενες εισόδους.Ομοίως και εκεί που υπολογίζεις το fi.

Έκανε κανείς το β από το 3 ? Στην ουσία θέλει να πετάξουμε τον εσωτερικό βρόχο και να κάνουμε την ίδια δουλειά με πίνακες ή είναι κάτι αλλο?


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aseficha on April 28, 2014, 15:30:02 pm
Στο β ερώτημα ξέρει κανείς τι πρέπει να κάνουμε?


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aseficha on April 28, 2014, 16:07:31 pm
Το plant.p πως το χειριζόμαστε? δεν μπορούμε να το ανοιξουμε,πως το χρησιμοποιούμε?


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Katsi on April 28, 2014, 16:40:19 pm
Το plant.p είναι ένα γραμμικό σύστημα. Σκέψου το σαν μια συνάρτηση μεταφοράς. Του δίνεις μια είσοδο και σου επιστρέφει μια διαφορετική έξοδο.


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Katsi on April 29, 2014, 12:13:08 pm
Το plant.p είναι ένα γραμμικό σύστημα. Σκέψου το σαν μια συνάρτηση μεταφοράς. Του δίνεις μια είσοδο και σου επιστρέφει μια διαφορετική έξοδο.
Ναι αλλα δεν μπορούμε να το πετάξουμε στον κώδικα μας ,ένα ξερό plant.p εννοώ πως το χρησιμοποιούμε?

y = plant(x)  :)


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aseficha on April 29, 2014, 13:18:26 pm
Εκανε κανένας το Block Lms (nested loops)? τι βήμα παίρνουμε ? εμένα για οτιδήποτε πάνω από mu=0.1 δεν συγκλίνει ,παρόλο που με τις ιδιοτιμές βγάζω mu<4.4 .Για τιμές κάτω του 0.1 λειτουργεί κομπλέ


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Groucho on April 29, 2014, 14:15:25 pm
Εκανε κανένας το Block Lms (nested loops)? τι βήμα παίρνουμε ? εμένα για οτιδήποτε πάνω από mu=0.1 δεν συγκλίνει ,παρόλο που με τις ιδιοτιμές βγάζω mu<4.4 .Για τιμές κάτω του 0.1 λειτουργεί κομπλέ

Κι εγώ το ίδιο


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Katsi on April 29, 2014, 17:26:33 pm
Και εμένα έτσι συγκλίνει. Με πολύ μικρό βήμα < 0.1 .


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: anid on April 29, 2014, 21:27:13 pm
Πήραμε καμιά παράταση;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Katsi on May 01, 2014, 01:43:56 am
Πήραμε καμιά παράταση;
Μέχρι Κυριακή


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: lindou on May 01, 2014, 13:03:54 pm
Πήραμε καμιά παράταση;
Μέχρι Κυριακή

    
2η εργασία (Hμ/νία λήξης δηλώσεων: 04/06/2014)

(Απο ethmmy)


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aseficha on May 01, 2014, 13:55:59 pm
Στον block lms δεν έχουμε πρόβλημα για τις τιμές του u όταν κ=0?

       y(k*L + i) = w'*u(k*M+i:-1:k*M+i-M+1);

        e(k*L + i) = d(k*L + i) - y(k*L + i);
        fi = fi + mu*e(k*L + i)*u(k*M+i:-1:k*M+i-M+1);

ουσιαστικά πάμε να υπολογίσουμε προηγούμενες τιμές που δεν υπάρχουν


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: anid on May 01, 2014, 15:25:32 pm
Να ρωτήσω κάτι για το 2ο ερώτημα.. Το Τ(2) στη σχέση είπε ότι είναι 4; Γιατί εμένα δε μου βγαίνει για Τ(2)=4


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: jimPster on May 02, 2014, 14:06:01 pm
Για την αναδρομική σχέση Τ(n)  αν μπορει καποιος να εξηγησει τι ειναι και πως
την χρησιμοποιουμε , γιατι δεν παρακολουθω το μαθημα


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: adianohtos on May 02, 2014, 14:39:11 pm
3η εργασια θα βαλει; Γιατι τοσο μεγαλη παραταση;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: christgc on May 02, 2014, 16:08:45 pm
Λογικά 4/5 είναι το σωστό, μάλλον έγινε λάθος..


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: xfride on May 03, 2014, 11:28:14 am
Για το 1ο ερώτημα ....
Θέλει στο κάτω μέρος τα fe, fo που υπολογίζει με fft να τα υπολογίσουμε με με x(n)W? ?....σαν αθροισμα γινομένων




Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Neal on May 04, 2014, 15:59:16 pm
Για την αναδρομική σχέση Τ(n)  αν μπορει καποιος να εξηγησει τι ειναι και πως
την χρησιμοποιουμε , γιατι δεν παρακολουθω το μαθημα

Κάποιος;


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: aloko on May 04, 2014, 18:02:49 pm
Για την αναδρομική σχέση Τ(n)  αν μπορει καποιος να εξηγησει τι ειναι και πως
την χρησιμοποιουμε , γιατι δεν παρακολουθω το μαθημα

Κάποιος;

Η αναδρομική σχέση που δίνει στην εκφώνηση δίνει τον αριθμό των flops του FFT σε συνάρτηση με το n (μήκος του σήματος εισόδου). Υπάρχουν διάφοροι τρόποι να υπολογίσεις το T(n) από τον κώδικα/αλγόριθμο (στο μάθημα των Αλγορίθμων τα είχαμε κάνει αλλά και με googlάρισμα είναι εύκολο να βρεις υλικό). Το ερώτημα ζητάει τη βελτίωση του FFT σε σχέση με τον DFT υπολογίζοντας τα T(n) του κάθε ενός.


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Tracy_McGrady on May 04, 2014, 19:29:07 pm
Επειδη και εγώ δεν μπόρεσα να πάω στ μαθηματα αν είπε κάτι για την εργασία....για τ πρώτο ερώτημα οι πίνακες που έχει μας χρειάζονται???και αν πρέπει να σχηματίσουμε τα αθροίσματα που ζητούνται τότε τα fe fo που έχει στο τέλος του κώδικα τ διαγράφουμε???...


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: lindou on May 04, 2014, 19:54:43 pm
Επειδη και εγώ δεν μπόρεσα να πάω στ μαθηματα αν είπε κάτι για την εργασία....για τ πρώτο ερώτημα οι πίνακες που έχει μας χρειάζονται???και αν πρέπει να σχηματίσουμε τα αθροίσματα που ζητούνται τότε τα fe fo που έχει στο τέλος του κώδικα τ διαγράφουμε???...
βασικα αν δεις τα fe,fo τα υπολογιζει με την fft της matlab. εμεις πρεπει να τα υπολογισουμε απο τις σχεσεις που μας δινονται


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Tracy_McGrady on May 09, 2014, 18:49:38 pm
Εκανε κανένας το Block Lms (nested loops)? τι βήμα παίρνουμε ? εμένα για οτιδήποτε πάνω από mu=0.1 δεν συγκλίνει ,παρόλο που με τις ιδιοτιμές βγάζω mu<4.4 .Για τιμές κάτω του 0.1 λειτουργεί κομπλέ

Κι εγώ το ίδιο
Να φανταστώ χρησιμοποιείται το κριτήριο μ<2/λmax. Κάπου είδα οτι ειναι 0<μ<2/L*λmax


Τώρα βεβαια στο pdf του Haykin δίνει το 2/λmax αλλα τ να πω xD


Title: Re: [Ψηφιακά Φίλτρα]Εργασία B 2014
Post by: Tracy_McGrady on May 12, 2014, 00:52:21 am
Για να κάνω το ερώτημα με 1 loop στον LMS: πάλι δε χρειάζομαι 2ρη loop???πως δημιουργώ απευθειας τέτοιο πίνακα????