|
|
Deconvolution funktioniert nicht |
|
Pedde |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2013, 20:01
Titel: Deconvolution funktioniert nicht
|
 |
|
 |
|
Hallo alle miteinander,
ich bin gerade dabei einen Kanal zu ermitteln um dann ihn wieder zu extrahieren. Und zwar habe ich den Kanal durchgemessen und somit die Impulsantwort erhalten. Diese ist ein Vektor mit 2002 Elementen. Im Anschluss daraufhin habe ich ein Signal mit der selben länge mittels des Matlab Befehls: Ergebnis = conv(Signal,Impulsantwort). Als Ergebnis habe ich nun die Systemantwort in Vektorieller Form mit einer Länge von 4003 Elementen.
Und nun zu meinem Problem: Ich möchte jetzt das ganze Rückwärtsrechnen und zwar indem ich Signal_app = deconv(Ergebnis, Impulsantwort) rechne. Wenn ich das mache kommt allerdings ein sehr komisches Ergebnis heraus das nicht stimmen kann.
Später möchte ich dann auch nicht das Selbe Signal verwenden sondern ein beliebiges "Ergebnis" Signal.
Bin am verzeifeln und weis nicht wie ich wieder das Ursprüngliche Signal bekomme. Habe schon was von nem Least-Square Ansatz gehört, aber das kann ich doch mit Vektoren nicht machen oder? Ich weis es gäbe noch die Möglichkeit das ganze im Frequenzbereich zu machen, das möchte ich aber umgehen.
Wäre euch sehr dankbar für eure Hilfe,
Viele Grüße,
Petra
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.01.2013, 00:21
Titel: Re: Deconvolution funktioniert nicht
|
 |
Hallo Petra,
Wie können wir Dir denn weiter helfen? Bisher ist die Beschreibung Deines Problems eher vage. Was genau ist z.B. ein "sehr komisches Ergebnis" und wieso kann es nicht stimmen? Was ist ein beliebiges "Ergebnis" Signal und wozu möchtest Du es verwenden?
Am besten teilst Du das Problem erstmal in überschaubare Abschnitte und klärst sie Stück für Stück. Konkreter Code und Test-Daten sind meist besser verständlich als eine Beschreibung als Text.
Gruß, Jan
|
|
|
Pedde |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.01.2013, 15:02
Titel: Deconvolution funktioniert nicht
|
 |
|
 |
|
Hi Jan,
danke für deine Antwort. Ich weis meine Erklärung war nicht gerade Verständlich ich probiers mal nochmal...hoffentlich klappts jetzt besser
Also mein Ziel ist es ein empfangenes Signal aus einem mir bekannten Kanal (ich hab die Impulsantwort) zu dekodieren. Das wollte ich mit der deconv() funktion machen, die mir allerdings ein falsches Ergebnis liefert. Das gesendete Signal ist mir bekannt
So war bisher meine mathematische Denkweise:
Zeile 1: empfangenesSignal = conv(gesendetesSignal, ImpulsantwortKanal);
das hat soweit ganz gut funktioniert. Wenn ich jetzt jedoch das gesendete Signal ermitteln will mit dem Ergebnis aus Zeile 1, machte ich das bisher so:
Zeile 2: gesendetesSignal = deconv(empfangenesSignal,Impulsantwort)
Allerdings kam da ein komplett falsches Ergebnis raus.
Und jetzt brauch ich Hilfe wie ich die Zeile 2 alternativ berechnen kann.
Ich hab was von nem Least-Squares ansatz gehört, hab aber keine Ahnung wie ich die Matrizen aufstellen muss.
Danke für eure Hilfe,
Liebe Grüße,
Petra
|
|
|
Pedde |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.01.2013, 15:22
Titel: Deconvolution funktioniert nicht
|
 |
kurz gesagt:
ich habe die Gleichung
A*x =b (entspricht conv)
ich möchte jetzt die Matrix A ausrechnen, wobei mir b und x bekannt ist.
(entspricht deconv)
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.01.2013, 23:39
Titel: Re: Deconvolution funktioniert nicht
|
 |
Hallo Petra,
Zitat: |
A*x =b (entspricht conv)
ich möchte jetzt die Matrix A ausrechnen, wobei mir b und x bekannt ist. |
Aber dann ist A doch gar nicht eindeutig bestimmt.
Gruß, Jan
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 16.01.2013, 00:07
Titel:
|
 |
Zitat: |
Ich weis es gäbe noch die Möglichkeit das ganze im Frequenzbereich zu machen, das möchte ich aber umgehen. |
Warum? Ab einer gewissen Anzahl von Messwerten ist dieser Weg ohnehin schneller als die Faltung im Zeitbereich. Evtl. rechnet die conv() Funktion sogar im Frequenzbereich
Ich könnte dir dafür sofort eine Lösung anbieten. Das die Rückwärtstransformation mittels deconv nicht richtig funktioniert bzw. nicht das erwartete Ergebnis liefert habe ich auch schon festgestellt. Allerdings weiß ich da auch keine Lösung. Es könnte evtl. daran liegen, wenn man die Vektoren y und h nicht vorher entsprechend mit Nullen auf die Länge n + m -1 erweitert (Faltungssatz).
x[n] z.B. = Einheitssprung
h[m] = Impulsantwort des Systems
y[n + m - 1] = Sprungantwort
1) Faltung: y[n+m-1] = conv(x[n],h[m])
2) Rückwärtsfaltung: x[n] = deconv(y[n + m -1],h[m + n - 1])
Das ist aber nur eine vage Vermutung.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|