WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FFT Auflösung nachträglich reduzieren

 

Roman
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2021, 11:17     Titel: FFT Auflösung nachträglich reduzieren
  Antworten mit Zitat      
Hallo,
ich habe ein FFT_ganz einer Audiodatei von einigen Minuten Länge, die Auflösung ist 1/dauer. (ich brauche auch das FFT der ganzen Aufnahme)
Dann habe ich die Audiodatei in 8 Zeitabschnitte geteilt, von jedem Zeitabschnitt ein FFT berechnet und den Mittelwert dieser 8 FFTs. (FFT_mean)
Damit habe eine gute Mittlung und Rauschreduzierung, da ich leise durchgehende Töne im Hintergrund suche.

Mein Problem ist jetzt, das das FFT_mean eine 8-mal gröbere Auflösung hat, und damit bis zu sqrt( 8 ) höhere Amplituden.
Technisch ist das erstmal nicht schlimm, nur es ist nicht hübsch, wenn der Durchschnitt "oben auf" anstatt "mitten drin" liegt.

Meine Idee ist jetzt, wenn ich immer Blöcke zu 8 Frequenzabschnitte der FFT_ganz addiere und durch sqrt (8 ) teile,
dann müsste sich das Amplitudenlevel und die Auflösung dem FFT_ganz an die FFT_mean angleichen, und die Mean-Kurve in der Mitte der FFT_ganz Kurve liegen.

Meine Frage ist wie addiere ich immer Blöcke mit 8 fortlaufende Werte zu einem Wert einer Sehr langen Liste?
Dazu habe ich nichts gefunden und wüsste auch nicht was ich in eine Suchzeile eingeben sollte.

Frage 2 ist, ob der Gedankengang richtig ist?

Viele Grüße
Roman
Private Nachricht senden Benutzer-Profile anzeigen


Roman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 14.02.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2021, 01:09     Titel:
  Antworten mit Zitat      
Ich hab jetzt eine Antwort gefunden.

Code:
a=[fft_amp]; # Amplituden der FFT_lang
b= length (a)
c= fix (b/8)
d = reshape (a, 8, c);
e = (sum (d)')/sqrt(8);
 


Very Happy

...Und es kam genau das heraus, was ich erhofft hatte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.