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 ändern

 

Kia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 89
Anmeldedatum: 02.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2011, 14:45     Titel: FFT-Auflösung ändern
  Antworten mit Zitat      
Hallo,
ich komme mit der Auflösung der FFT nicht klar!
ich habe eine Signal der Länge (nehmen wir an) 25000 (n=25000)

N bzw. NFFT (so wird in Matlabs eigene Bsp. gennant) wäre mit
Nfft1=2^nextpow2(n) = 32768;
zusammengefasst könnte so aussehen
Code:

%%
load data1;
%%
Fs1= 22050;
dt1= 1/Fs1;
N1=length(data1);
t1=(0:dt1:((N1*dt1)-dt1))';      % creating a time vector
Nfft1=2^nextpow2(N1);
y1=fft(data1,Nfft1)/N1;
yplot1=2*abs(y1(1:Nfft1/2+1));
f1=Fs1/2*linspace(0,1,Nfft1/2+1);      % create freqs vector
 


Ich würde dann in diesem Fall bei einer FFT die Auflösung von 1Hz erreichen, wobei die Länge meines Frequenzvektors dann logischerweise 32768/2 + 1 (=16385) ist

Nun möchte ich aber meine Auflösung auf 10 Hz reduzieren un dabei das Spektrumsbereite beibehalten (Fs/2). Da komme ich aber bißchen durcheinander was ich hier "manipulieren" muss:
Code:

Fs1= 22050;
Resolution = 10;    %Hz
dt1= 1/Fs1;
N1=length(data1);
t1=(0:dt1:((N1*dt1)-dt1))';      % creating a time vector
Nfft1=2^nextpow2(N1/Resolution);
y1=fft(data1,Nfft1)/N1;
yplot1=2*abs(y1(1:Nfft1/2+1));
f1=Fs1/2*linspace(0,1,Nfft1/2+1);      % create freqs vector
 

in diesem Fall hätte mein Vektor immer noch die Länge n=25000, die NFFT wäre aber 4096! und entsprechend ist die Länge 2049!

Kann jemand mir bitte helfen was ich da falsch mache?
Private Nachricht senden Benutzer-Profile anzeigen


Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2011, 04:19     Titel:
  Antworten mit Zitat      
Die Frequenzauflösung df ist IMMER df = 1/Fensterbreite.

Heißt ein Signal geht beispielsweise von Sekunde 3 bis 11 , hast du eine Frequenzauflösung von 1/8 Hz da 8s Fensterbreite vorliegen. Bei 25000 Samples hast du ein Spektrum
von [0:25000]*1/11 Hz oder geshiftet von [-12500:12500]*1/11 Hz.

Hangel dich daran und es wird einfacher.

Schöne Grüße!!
Private Nachricht senden Benutzer-Profile anzeigen
 
NeuerMatlabFan

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2011, 13:59     Titel:
  Antworten mit Zitat      
Ich habe dasselbe Problem

wie dar f ich das bitte versteen?
Zitat:
Bei 25000 Samples hast du ein Spektrum
von [0:25000]*1/11 Hz oder geshiftet von [-12500:12500]*1/11 Hz.

wo kommt die ZAhl 11 her? 11 Sekunden Zeitfenster? 25000*1/11Hz ergibt doch eine Auflösung von 22xxHz?!?!?!
Ich frage mal anders
wenn ich ein ZEitfenster von zwei Sekunden habe in dem ich 10.000 Messwerte (SAmples) habe, was habe ich für eine Auflösung wenn ich mit 20kHz abtaste? Kann jemand mir ein einfaches Rechen-Beispiel bringen bitte?
Gruß
 
Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2011, 10:31     Titel:
  Antworten mit Zitat      
Aus deiner Ausnahmezeit. Hätte mit 1/8 weiter machen müssen...

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.04.2011, 11:13     Titel:
  Antworten mit Zitat      
also bei einem zwei Sekunden Zeitfenster und 10.000 Werten bekommt man eine Abtastrate von 10000/2 = 5 kHz.


vielleicht bringen diese drei Zeilen ein wenig Klarheit

Code:

Ts      = diff(zeit(1:2));              % Abtastzeit
N       = length(zeit);                 % Anzahl der Abtastwerte bzw. Messwerte
f       = [0:floor((N-1)/2)] / (N*Ts);    % Frequenzvektor für Spektrum-Plot
 


das delta im Frequenzvektor ergibt sich also aus 1/(N*Ts).
Die höchste Frequenz im Spektrum, die ich noch berechnen kann ist floor((N-1)/2)] / (N*Ts.

bei N = 10000 Werten und Ts = 1 / 5 kHz bekommt man eine Auflösung der Frequenz von df = 0.5 Hz würde ich sagen


Gruß,
Idefix_1024
Private Nachricht senden Benutzer-Profile anzeigen
 
horst

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2011, 16:49     Titel:
  Antworten mit Zitat      
Hallo

was mache ich wenn das Signal von Sekunde 0 -0,01 anliegt.
Abtastrate z.B. 100kHz

Oben steht die Frequenzauflösung ist immer 1/Fensterbreite

Somit käme ich maximal auf 100Hz Genauigkeit

df = 1/0,01s = 100Hz

Ich hätte aber gerne 1Hz Genauigkeit...

Vielen Dank
 
lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 02.05.2011, 17:14     Titel:
  Antworten mit Zitat      
Hallo Horst,

wenn ich dich richtig verstehe hast du eine 100Hz Abtastrate vorliegen aber du willst eine mit 1 Hz. Wenn das der Fall ist, dann guck dir die Funktion
Code:
downsample
an
Private Nachricht senden Benutzer-Profile anzeigen
 
Horst

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2011, 15:17     Titel:
  Antworten mit Zitat      
lilov hat Folgendes geschrieben:
Hallo Horst,

wenn ich dich richtig verstehe hast du eine 100Hz Abtastrate vorliegen aber du willst eine mit 1 Hz. Wenn das der Fall ist, dann guck dir die Funktion
Code:
downsample
an


Hallo

ich würde gerne die Auflösung verbessern im moment ist die FFT nur auf 100Hz genau ich möchte aber 1Hz Genauigkeit

vielen Dank
 
Scriptor
Forum-Century

Forum-Century


Beiträge: 217
Anmeldedatum: 22.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.05.2011, 21:04     Titel:
  Antworten mit Zitat      
dann musst du genau eine Sekunde abtasten, dann hast du die gewünschte Frequenzauflösung. Dafür haste aber 100k Samples, willst du das wirklich?
Private Nachricht senden Benutzer-Profile anzeigen
 
Horst

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2011, 18:37     Titel:
  Antworten mit Zitat      
Hi Danke für die Antworten,

klar kann ich eine Sekunde Abtasten aber was bringt es wenn mein signal in dieser Sekunde nur 0,01 Sekunden anliegt und dann 0,99 sekunden rauschen zu sehen ist?

Grüße
 
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.