Εφόσον χρησιμοποιούμε έναν γραμμικό προβλέπτη που παίρνει σαν είσοδο μια καθυστερημένη κατά Δ έκδοση του d(n) παράγει έξοδο y(n) και την συγκρίνει με το ίδιο το d(n) δεν θα πρέπει η έξοδος του φίλτρου να ακολουθεί το d(n)? Πως γίνεται να καθαρίσει τον θόρυβο;
Πρέπει να προσέξεις λίγο. Δεν έχεις θόρυβο. Έχεις
περιοδική παρεμβολή. Που σημαίνει ότι το ανεπιθύμητο σήμα επαναλαμβάνεται περιοδικά. Έτσι, κάνοντας πρόβλεψη/εκτίμηση του σήματος, αυτό που παίρνεις μετά την εκτήμηση έχει ουσιαστικά δύο συνιστώσες, το σήμα σου και την (σχεδόν) ίδια περιοδική παρεμβολή.
Παίρνωντας το residual τώρα ( e = d - y ) έχεις αφαιρέσει σίγουρα την επίδραση της παρεμβολής από το σήμα. Είναι όπως ο διαφορικός ενισχυτής αφαιρεί την common mode τάση.
Toυλάχιστον κάπως έτσι το αντιλαμβάνομαι εγώ.
Κοίτα και εγώ αυτό που κατάλαβα από την εκφώνηση είναι ότι πρέπει να αφαιρέσουμε την επίδραση του x(n), που λογικά είναι η περιοδική παρεμβολή αφού το άλλο σήμα (v(n)) είναι λευκός θόρυβος και δεν εμφανίζει περιοδικότητα. Στη συνέχεια όμως ορίζει σαν επιθυμητό σήμα το d(n) που είναι άθροισμα του σήματος "πληροφορίας" και της περιοδικής παρεμβολής. Αυτό το σήμα τώρα δίνεται σαν είσοδο και στον προβλέπτη αφού υποστεί καθυστέρηση κατά Δ δείγματα (δηλαδή στο MATLAB η είσοδος του φίλτρου είναι απλά u = [zeros(D,1);d(1:1:end-D] ;όπου D=10).
Το πρόβλημά μου είναι πως μάλλον δεν υπολογίζω σωστά τους βέλτιστους συντελεστές Wiener του φίλτρου καθώς μετά την εφαρμογή του Wiener φίλτρου στο σήμα εισόδου, το σήμα εξόδου του φίλτρου ακολουθεί τις ίδιες μςταβολές με το x (ή το d) αλλά διαφέρει σημαντικά στο πλάτος. Μάλιστα μου φαίνεται πως μοιάζει περισσότερο στο d παρά στο x.
Οι εντολές για υπολογισμό των πινάκων R και p που χρησιμοποίησα είναι οι εξής:
p=xcorr(u,d);
p=p(length(u):(length(u)+M));
p=p/length(u);
r=xcorr(u,u);
r=r(length(u):(length(u)+M));
r=r/length(u);
R=toeplitz(r,r);
wo=R\p;
Τώρα ή κάνω κάποιο λάθος στον υπολογισμό του διανύσματος εισόδου u(n) ή στον υπολογισμό των R,p καθώς ο LD αλγόριθμος μου δίνει φίλτρο που ουσιαστικά σχεδόν ταυτίζεται με τη βέλτιστη απόκριση του φίλτρου Wiener. Δηλαδή, ακολουθεί την βέλτιστη απόκριση Wiener όπως θα έπρεπε άλλωστε. Το πρόβλημα είναι πως η απόκριση Wiener δεν είναι καλή.

Κάνω καμία πατάτα στις παραπάνω εντολές που δεν τη βλέπω;

μπορεί να είναι χαζή η ερώτηση αλλά για ποιόν λόγο διαιρείς με το length(u) ??