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 über Signal in einem bestimmten Zeit- bzw. Wertebereich

 

teutopixx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 14:38     Titel: FFT über Signal in einem bestimmten Zeit- bzw. Wertebereich
  Antworten mit Zitat      
Hallo,

allgemein weiß ich, wie man in Matlab eine FFT-Analyse durchführt.
Jetzt hapert es allerdings an der Umsetzung folgender Aufgabenstellung.

Angenommen, ich habe ein Signal mit 20.000 Messwerten. Mir ist die Abtastzeit und -frequenz bekannt etc.
Nun möchte ich die FFT über einen bestimmten Wertebereich durchführen, z. B. zwischen den Messwerten 2000-4000.
Das Problem was sich dabei ergibt, ist, dass ich beim Plotten andauernd den Fehler bekomme, dass die Vektoren gleich lang sein müssen.
Wenn ich mir die Variablen ansehe, so haben einige in der Tag einen Wert zuviel drin.
Wie kriege ich diesen Fehler abgestellt?
_________________

----
teutoPIXX
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.06.2011, 09:45     Titel:
  Antworten mit Zitat      
Hallo teutopixx,

hast du dir diese Vorlage aus dem Forum schon mal angesehen?

>>> FFT Beispiel <<<

Den Programmteil bei dem es Probleme gibt, solltest du hier besser mal posten, damit man es einfach nachvollziehen kann.

Die FFT aus Matlab

Code:


liefert dir ja einen Amplitudenvektor der Länge N, wobei N sinnvollerweise eine 2er Potenz sein sollte um die schnelle FFT durchführen zu können. Wenn du das Ganze nun noch mit einem passenden Frequenzvektor ploten willst, müssen sie natürlich die gleiche Länge haben. Ist das dein Problem? In dem oben genannten Beispiel sieht man ja sehr gut, wie der Freq.-vektor angelegt werden muss.
Private Nachricht senden Benutzer-Profile anzeigen
 
teutopixx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2011, 11:09     Titel:
  Antworten mit Zitat      
Hey,

also so komplex, wie das Beispiel der FFT hier im Forum, habe ich meine FFT nicht gestaltet.

Im Prinzip möchte ich in einem Bereich eines Signals, den ich vorher selbst festlegen kann, eine Frequenzuntersuchung durchführen.

Dieses habe ich gelöst, in dem ich einfach den Bereich als Wert festlege.
Aber irgendwie gibt es da das Problem.

Hier mein Quellcode:

Code:

load('daten3.mat', 'daten')
x = daten(:,1)'

N       = length(x);              
                                                     
fs      = 5000;                    

fmax    = 0.5*fs;                  
                                   
Ta      = 1/fs;                    

dauer   = Ta*(N-1);                  

t       = 0:Ta:dauer;              % (x-Achse)

signal = x - mean(x);              

Bereich = 1000:5000;

N       = length(Bereich);


%Festlegung des Ausschnitts auf den die FFT angewendet wird
signal_ext   = signal(Bereich);
t_ext        = t(Bereich);                          


fspektrum = fft(signal_ext, N)/N;


% Frequenzvektor
f=0:1:length(Bereich)/(N*Ta);    

figure(1);
plot(t,signal,t_ext,signal_ext,'g')
legend('Signal','Ausschnitt')
xlabel('t/s');
ylabel('Signal');

figure(2);
plot(f,abs(fspektrum),f,abs(fspektrum),'r')
xlabel('f/Hz')
ylabel('Amplitude')

 


Danach erscheint folgende Fehlermeldung:

??? Error using ==> plot
Vectors must be the same lengths.

Error in ==> Untitled at 40
plot(f,abs(fspektrum),f,abs(fspektrum),'r')[/code]
_________________

----
teutoPIXX
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.06.2011, 11:32     Titel:
  Antworten mit Zitat      
so?

Code:

nach Berechnung der FFT einfügen ....

% Frequenzvektor 0 Hz....fs/2 Hz
f_pos0 = fs*(0:(N/2))/N ;
% nur das halbe Amplitudenspektrum im Bereich 0 Hz....fs/2 Hz verwenden
Fy_pos0 = fspektrum(1:((N/2)+1)) ;

figure(2);
plot(f_pos0,abs(Fy_pos0),'r')
xlabel('f/Hz')
ylabel('Amplitude')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
teutopixx
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2011, 09:37     Titel:
  Antworten mit Zitat      
Hey DSP,

herzlichen Dank, so geht es!
Immer dasselbe Leid mit den verschiedenen Wertebereichen Neutral
_________________

----
teutoPIXX
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.