|
hosti |

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.09.2009, 15:40
Titel: Fensterung --> FFT
|
 |
Hallo!
Ich möchte ein Signal von ein paar Sekunden Länge im Zeitbereich in Blöcke (20 ms) unterteilen (fenstern?, hann?) und dann anschließend jeden dieser Blöcke einer FFT zu unterziehen, um dann im Frequenzbereich weitere Analysen für jeden Block seperat durchführen zu können.
Wie generiere ich hier am Besten diese Blöcke, auch damit keine Information verloren geht?
Bin für jede Hilfe dankbar!
Grüße
|
|
|
|
|
Termi3xxl |

Forum-Anfänger
|
 |
Beiträge: 23
|
 |
|
 |
Anmeldedatum: 18.12.07
|
 |
|
 |
Wohnort: Sorry hat sich geändert... Stuttgart
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.09.2009, 15:21
Titel: hab ein änliches Problem....
|
 |
Hey wie es aussieht hab ich eine ähnliches Problem!!!
Ich mache folgendes:
habe ein Fig, da Lade ich mein Messsignal. KAnn dann per Hand duch Eingabe eine Fensterung machen -> Signal ausschneiden. Aber ohne wiederholung!!! Nur das eine mal...
Dann lasse ich eine FFT drüber laufen. (Anleitung hier aus den Forum!!!)
Bei der Fensterung musst du wissen was dir wichtiger ist.... Amplitudentreue oder Flächenträue....
->rechteck (rectwin) ist soweit ein recht gutes Fenster
bitte aber nicht festnageln!!!
|
|
|
hosti |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.09.2009, 17:08
Titel:
|
 |
Ich habe im Anhang ein Bild angehängt, wo man sieht wie ich das meine.
Wenn jemand weiß, wie man sowas in Matlab realisiert wär ich sehr dankbar.
Weiters weiß ich nicht ob ich eine Fensterung mit Overlap (wie im Bild) durchführen soll, oder ich habe mir gedacht nach jedem 20ms Fenster ein 20ms Zero-Padding anzuhängen.
Was wäre geschickter?
Grüße
hosti
Beschreibung: |
|
 Download |
Dateiname: |
windowing.jpg |
Dateigröße: |
56.44 KB |
Heruntergeladen: |
1230 mal |
|
|
|
hosti |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.09.2009, 11:28
Titel:
|
 |
So, habe etwas gebastelt und nun folgendes in meinem Code stehen:
Somit fenstere ich immer Blöcke (w1, w2, w3, ...) von 20ms des Signals. Die Implementierung so ist aber sehr umständlich. Das geht sicher auch irgendwie, dass ich ihm sagen kann, er soll das Signal alle 20ms fenstern und die Blöcke separat ausgeben, damit ich diese einzeln weiter bearbeiten kann!?! Vor allem ist das Eingangssignal immer unterschiedlich lang und es soll ja immer das ganze Signal unterteilt werden.
Wie kann man sowas realisieren OHNE Schleife!
Grüße
hosti
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 11.09.2009, 11:38
Titel:
|
 |
Ohne Schleifen fällt mir da nix kürzeres ein.
Warum willst/sollst/darfst du keine nehmen ?
PS: bei unterschiedlich langen Signalen bist du doch eh auf ne Schleifenart (-> if) angewiesen ?!
PPS: okay, Ansichtssache ob man if nun zur schleife zählt, aber zumindest im ASM müsste man springen... und if & goto while
|
|
|
hosti |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.09.2009, 14:18
Titel:
|
 |
Mir wurde gesagt, dass Schleifen in Matlab bei größeren Wav-Signalen (paar Minuten lang) problematisch werden könnte mit der Rechendauer. Vor allem wenn es dann auch noch mehrere sind.
Aber du hast recht. Ohne Schleife fällt mir momentan auch nix ein.
Hab es hier mal mit einer FOR Schleife versucht:
Das (kleine) Problem welches ich jetzt noch habe ist, dass mir hier jetzt die ersten 20ms vom Signal wegfallen wegen w(k*Nf:k*Nf+Nf-1). Bin noch nicht dahinter gekommen wie ich auch diesen ersten Block in die Matrix schreiben kann. Der Start für die erste Spalte in der Matrix hier erst nach den ersten 20ms bei k=1.
Ansonsten würde ich annehmen dass es so mit der Schleife passt.
Mal schauen ob ich/wir auch auf eine Nicht-Schleifen-Lösung kommen.
Grüße
hosti
edit:
Das Problemchen mit dem Start der Schleife hab ich gleub ich hin bekommen:
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 12.09.2009, 14:09
Titel:
|
 |
so müsste es stimmen.
Allgemein "Schleifen sind böse" kann man nicht sagen.
Das gilt eher für Matrixoperationen, die vektorisierbar sind... zb: anstelle
lieber
schreiben.
Aber sobald man Copy&Paste machen würde, kann man auch ne Schleife nehmen. Dachte, es ist irgendne lustige Informatikeraufgabe oder so...
|
|
|
hosti |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.09.2009, 12:57
Titel:
|
 |
Ok, danke Andy.
Jetzt habe ich mein Signal im Zeitbereich in Blöcke unterteilt.
Von jedem Block mach ich jetzt die FFT. Nun muss ich auch im Frequenzbereich in Frequenzblöcke unterteilen. Wie kann man sich das vorstellen bzw. realisieren, oder ist das sowieso schon mit der FFT passiert?
Da Blick ich noch nicht so ganz durch.
Grüße
hosti
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 15.09.2009, 11:45
Titel:
|
 |
was willst du denn genau für Blöcke rausbekommen ?
|
|
|
hosti |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.09.2009, 12:45
Titel:
|
 |
Prinzipiell würde es mir darum gehen, wie ich im Frequenzbereich in Blöcke unterteilen kann. In weitere Folge wahrscheinlich in Bezug auf die kritischen Frequenzbandbreiten.
http://de.wikipedia.org/wiki/Frequenzgruppe
|
|
|
derOli |

Forum-Meister
|
 |
Beiträge: 579
|
 |
|
 |
Anmeldedatum: 19.03.08
|
 |
|
 |
Wohnort: Leipzig
|
 |
|
 |
Version: 2010a
|
 |
|
|
 |
|
Verfasst am: 15.09.2009, 14:23
Titel:
|
 |
Hallo,
Fensterung geht auch ohne Schleife und ist dann wirklich viel schneller:
Habe ich aber vor einem Jahr selbst auch noch mit For Schleifen gemacht.
Viele Grüße,
der Oli
|
|
|
hosti |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 08.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.09.2009, 20:26
Titel:
|
 |
Ja, ok.
Hab jetzt folgendes statt der Schleife.
Diese Methode ist um ca. da 4-fache schneller als in der Schleife.
Grüße
hosti
|
|
|
|
|
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.
|
|