fa = 8000; % Abtastfrequenz
fn = fa/2; % Nyquistfrequenz
N = 1024; % gewünschte FFT-Länge (N=2^x, sonst wird der DFT-Algorithmus verwendet!)
df = fa/N; % Frequenzauflösung % Erzeugung eines Datensatzes mit N Abtastwerten % ----------------------------------------------
t = 0 : 1/fa : (N-1)/fa; % x-Vektor % Frequenzvorgabe in Hz als ganzzahlig Vielfaches der Frequenzauflösung der DFT/FFT:
f1 = df*100; % bei fa = 8000 Hz und N = 1024 beträgt df = 7,8125 Hz und % f1 damit 781,25 Hz
f1 = 784;
f1 = df;
phase = pi/2;
a1 = 1; % Amplitudenvorgabe
y = a1*sin(2*pi*f1*t); % y-Vektor
y = [y(1:N/2)zeros(1, N/2)];
% Graphische Darstellung % ---------------------- % max. Amplitude zur Skalierung der graphischen Darstellung feststellen:
max_y = max(abs(y))*1.1;
fig = figure(1);
plot(y) axis([0 N -max_y max_y]) title('Datensatz') ylabel('Amplitude') xlabel('N Stützstellen') grid
Verfasst am: 31.01.2008, 12:41
Titel: Ergänztes Beispiel in Skriptecke
Hallo,
ich habe das Beispiel noch um eine Fenterung ergänzt. Es ist jetzt in der Skriptecke zu finden
Gruß
Nils
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 22.03.2009, 14:32
Titel: Vielen Dank
vielen Dank für die Anregungen - ich habe das Script auch gleich als Gerüst weiterverwendet
Nati
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.08.2010, 06:59
Titel:
Bei der Ausgabe in des Pegels in [dB] fehlt der Referenzwert von 2e5 Pa
derbene
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.11.2011, 10:09
Titel:
Hi!
Funktioniert das ganze auch mit gegebenen Werten? Habe folgendes "Problem":
Ein Datenlogger zeichnet mir Beschleunigung (in allen drei Achsen) über die Zeit auf - mit einem festen Intervall von 0,5ms. Diese fasst er zu sog. Events zusammen, die aber unterschiedlich lang sind (min. 30ms, max. 900ms - mit 30ms-Intervallen dazwischen).
So habe ich z.B. ein Event, das 90ms insgesamt dauert und dazu je 180 gemessene Werte der Beschleunigung in g für X, Y und Z Achse.
Kann ich daraus jetzt mit möglichst einfachen Mitteln die Frequenzen ermitteln? Bisher scheitert es ja schon daran, dass Excel bei einer fft Datensätze mit einer Anzahl einer 2er-Potenz fordert, was bei 180 ja schon nicht geht - oder stehe ich bereits hier auf dem Schlauch?
Ein zweiter Schritt wäre dann, eine Art Analyseverfahren zu erstellen, mit dem man dann mehrere (oder viele) Events hinsichtlich bestimmter Merkmale (Frequenz oder max. g-Ausschlag) filtern kann.
Ist sowas mit Excel möglich oder braucht es dazu andere Programme?
Vielen Dank vorab für erste Hilfen!
Zudem möchte ich das ganze mit einer freien Software wie freemat machen.
dir ist schon klar, dass dies hier ein Forum vor allem für Matlab ist
Die FFT kann man selbstverständlich statt mit Testsignalen auch mit eigenen Messwerten durchführen. Ist die Anzahl der Messwerte keine 2er Potenz, gibt es 2 Möglichkeiten:
- Zeropadding: Die Signallänge wird auf die nächste 2er Potenz durch Anhängen von Nullen am Ende erweitert.
- eine langsamere DFT durchführen, wobei hier die Anzahl der Messwerte beliebig ist
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
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.