Ich lese eine *.mat-Datei ein die 2 Spaltenvektoren beinhaltet. Zeit und Spannung. Ich will jedoch nur über Ausschnitte dieser großen Datei mit der FFT rübergehen. Die Abtastzeit meiner messwerte beträgt 500e-6s. Hier ist mein Versuch:
Ich gebe mit t_start und t_end meinen Messdatenausschnitt an, rechne die Zeiten um in das zutreffende start- und endfeld diese Zeit im Vektor. Die Vektorausschnitte werden richtig erstellt, aber irgendwie hab ich das Gefühl das ich es mir da mit diesem variablen Auschnitt zu einfach mache.
Ich bekomme die Fehlermeldung:
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
Error in ==> FFT2 at 20
y = [y(1:N/2); zeros(1, N/2)];
Ich gehe davon aus das, wie im Link oben, auch ich irgendwo die Zeilen und Spalten miteinander vermenge . Komme aber nciht dahinter. Habt ihr eine Idee?
Anbei meine Messdatendatei als .mat file. Bitte umbenennen! Damit isses einfacher nachzustellen.
Dann müsste glaube ich diese Zeile hier geändert werden...
Code:
% Für Zeilenvekoren
y = [y(1:N/2)zeros(1, N/2)];
% für Spaltenvektoren
y = [y(1:N/2); zeros(N/2, 1)];
% Damit man nicht ständig im Code die Dimensionen ändern muss, weil das Signal mal als Spalten oder Zeilenvektor vorliegt, sollte man folgendes machen:
signal = y(:); % dann hat man immer Spaltenvektoren ...
signal_neu = [signal(1:N/2); zeros(N/2, 1)];
Warum verwendest du allerdings nur die Hälfte deines Signals? Ist das Segment so gewählt, dass ganze Perioden des Signals enthalten sind? Sonst bekommst du den Leakage Effekt...dann solltest du dein Signal Fenstern.
ich hatte mir damit geholfen erstmal das Füllen mit nullen zu streichen. Da gings auch schon. Aber so ist es besser und komfotabler für zukünftige Anwednungen.
Warum ich das halbe Signal verwende? Wie gesagt, ich bin in Sachen FFT eine echter Neuling. Ich hatte das so aus dem Skript übernommen erstmal.
Wenn sich der Leakage-Effekt darin äußert, das ich über das gesamte Spektrum einen von 0 bis fn abfallenden Linien-"schweif" sehe dann, ja, den hab ich gefunden und der ist nicht erwünscht. Mit
Du solltest dich mal genauer mit diesem Effekt befassen...der Artikel auf Wikipedia ist da schon ausreichend. Dann selber in deinem Code anhand eines einfachen Testsignals ( y = sin(2*pi * f * t) ) ausprobieren, wie sich das Spektrum ändert, wenn f ein ganzzahliges Vielfaches von df ist und wenn nicht.
Ich habe zu diesem Effekt auch schon einige Antworten hier im Forum gegeben. Einfach mal danach suchen...Leakage und Fensterung. Warum entsteht es, wie zeigt sich das im Spektrum und wie kann man den Effekt minimieren. Das sind die zentralen Fragen.
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.