Verfasst am: 22.01.2016, 11:38
Titel: Fast Fourier Transformation so korrekt? Warnung?
Hallo Leute,
ich muss nun öfter mit der FFT arbeiten. Könnte sich jmd mal meinen Code anschauen und plausibilisieren? Der spuckt mir auch eine gute FFT aus, nur ich erhalte ebenso eine Warnung, warum?
Code:
%% fft
fft_variable = v; %fft Variable kennzeichnen
L=length(fft_variable); %Länge der Wertereihe kennzeichnen, hier über gesamten Zeitraum
time_range = (0:L-1)/Af;
Y = fft(fft_variable);
Y = Y(1:L/2); %Hälfe raus, da fft symmetrisch
Ampl = abs(Y); %Amplitude von Y
fb=Af*(0:(L/2-1))/L; %Frequenzbereich definieren
figure('Name','fft von der Geschwindigkeit','NumberTitle','off');
subplot(2,1,1),plot(t,fft_variable) %Originaldiagramm
grid on, title('Geschwindigkeit');
xlabel('time'),ylabel('v') subplot(2,1,2),plot(fb,Ampl) grid on, title('Amplitudenspektrum der Geschwindigkeit');
xlabel('f(Hz)'),ylabel('Amplitude') xlim([0,750])
die warnung sagt glaube ich nur das deine anzahl L nicht durch 2 teilbar ist und nur integer werte als index benutzt werden können. es giebt kein 3.5 tes element
in der skript ecke gibt es auch ein sehr umfassendes beispiel zur fft
_________________
das umfassende Skript zur FFT habe ich mir bereits angeschaut, konnte die Warnung aber nicht damit entschlüsseln. hm, dann könnte ich doch die länge einfach um -1 reduzieren oder? dann wäre die zahl ja wieder durch 2 teilbar.
darf ich das einfach so machen oder hättest du da bedenken? sind immer über 10000 Datenpunkte, also ein Punkt mehr oder weniger macht den Braten nicht fett oder?
sind immer über 10000 Datenpunkte, also ein Punkt mehr oder weniger macht den Braten nicht fett oder?
denke nicht. kenn mich mit fft aber nicht aus. da müssen andere ran ich weis blos was der fehler heist den du hattest. allerding solltest du nicht immer 1 abziehen ^^ wenn es vorher durch 2 teilbar war ist es das ja dann nicht mehr. vieleicht lieber floor benutzen.
_________________
% Berechnung der FFT % ------------------
H = fft(y, N);
% Berechnung des Amplitudengangs aus dem komplexen Frequenzvektor H:
amplH = abs(H);
% Darstellung des interessierenden Frequenzbereichs des % Amplitudengangs (0...fn) und % daran angepasste Amplitudenskalierung (Normierung auf N/2):
amplitudengang = [amplH(1)/N amplH(2:N/2)/(N/2) amplH((N/2) + 1)/N]; % DC-Bin auf N normieren!
% Darstellung Frequenzspektrum - linear plot(fv, amplitudengang)
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.