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 Plot max Amplitude

 

OVGU-MSPGler
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 16.11.08
Wohnort: Magdeburg
Version: 2010a
     Beitrag Verfasst am: 05.05.2009, 15:10     Titel: FFT Plot max Amplitude
  Antworten mit Zitat      
Eine kurze Frage, kann mir jemand sagen, wie mir der X-Wert der maximalen Amplitude eines Diagramms nach einer FFT ausgegeben werden kann?

Danke bereits für Eure Antworten!!

Zuletzt bearbeitet von OVGU-MSPGler am 05.05.2009, 18:57, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 05.05.2009, 16:44     Titel:
  Antworten mit Zitat      
Hi,

meinst du so?:

Code:

[a,b]=(max(randn(1,100)));
 


b ist dann der x Wert.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
OVGU-MSPGler
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 16.11.08
Wohnort: Magdeburg
Version: 2010a
     Beitrag Verfasst am: 05.05.2009, 17:31     Titel:
  Antworten mit Zitat      
an sich schon....habe es mit max auch bereits versucht, aber leider bekomm ich da nie die Hz Zahl als Ausgabe, bei der der höchste Peak ist. Siehe Matlab-Fig
Private Nachricht senden Benutzer-Profile anzeigen
 
OVGU-MSPGler
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 16.11.08
Wohnort: Magdeburg
Version: 2010a
     Beitrag Verfasst am: 05.05.2009, 18:56     Titel:
  Antworten mit Zitat      
ich füg mal noch die Grafik ein, um die es geht

Figure.jpg
 Beschreibung:

Download
 Dateiname:  Figure.jpg
 Dateigröße:  13.22 KB
 Heruntergeladen:  932 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 19:24     Titel:
  Antworten mit Zitat      
Hallo

versuch's doch mal mit der find-Funktion:

%MAX-PEAK 11 -100 Hz
a_peak2=max(ftdb(11:100));
index2=find(ftdb==a_peak2);
%if a_peak2 > a_peak1
plot(f(index2(1)),ftdb(index2(1)),'-r.','MarkerSize',5);
if i==2
text(f(index2(1)),ftdb(index2(1))*1.05, ['\color{blue}',num2str(index2(1)),', ',...
num2str(ftdb(index2(1)),4)],'VerticalAlignment','bottom');
elseif i==3
text(f(index2(1)),ftdb(index2(1))*1.05, ['\color{red}',num2str(index2(1)),', '...
,num2str(ftdb(index2(1)),4)],'VerticalAlignment','bottom');
end; % end;

Achtung: der Frequenz-Vektor muss mit 1 beginnen, sonst stimmt die Markierung nicht
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 05.05.2009, 19:39     Titel:
  Antworten mit Zitat      
Normalerweise sollte es mit max gehen, wahrscheinlich musst du das Ergebnis noch in Hz umrechnen, wenn du eine FFT bildest, hast du ja nicht die Hz Werte, dh du musst mit max, den Peak finden und diesen dann in deinen Umrechnungvektor eingeben.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
OVGU-MSPGler
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 16.11.08
Wohnort: Magdeburg
Version: 2010a
     Beitrag Verfasst am: 05.05.2009, 21:33     Titel:
  Antworten mit Zitat      
Also Oli ich bekomm es einfach nicht gerissen....

Also so sieht meine Datei aus:
Zitat:

%data: Signalvektor Übergabe über den Import Wizard
%fs: Abtastfrequenz in Hz
x=data; %Übergabe an x
npoint=32768; %Anzahl der Punkte, muss 2er Potenz sein
n = length(x); %Übernahme der Signalvektors
c = fft(x)/n; %FFT Erzeugung
amp = 2*abs(c); %Amplitude wird verstärkt
%% Darstellung Spektrum 1
fig=figure(1);
%amp(1) = amp(1)/2;
m = floor(npoint/2);
area(linspace(0,(m-1)*fs/n,m), amp(1:m))
title('Verbrennungslärm ohne Rohr')
xlabel('Frequenz [Hz]')
ylabel('Amplitude')
[a,b]=(max(amp));
b


Wo liegt denn mein Fehler? Jetzt noch einmal b in die FFT zu jagen kann doch eigentlich nichts bringen, da nun ja ein Skalar ohne 2er Potenz vorliegt...oder nicht? Hat übrigens auch das selbe Ergebnis gebracht Razz

@Gast.... deine Idee ist zwar sehr interessant, aber scheint mir die If Schleife da vielleicht doch etwas zu aufwendig... hat auch nicht gleich geklappt...
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 12.05.2009, 16:37     Titel:
  Antworten mit Zitat      
Hi,

dass ist das was ich meine:

Code:

area(linspace(0,(m-1)*fs/n,m), amp(1:m))
 


Wenn du linspace weglässt, zeigt dir max auch den richtigen Peak.

Du müsstest also den linspace abschnitt vorher speichern und dann in diesem vektor nach der max Bildung nachgucken:

Code:

xvalue= linspace(0,(m-1)*fs/n,m);
....
[a,b]=max(amp(1:m))
xvalue(b)
 


Viele Grüße,

der Oli
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.