Ich habe einen Datensatz von EK-Quoten von verschiedenen Unternehmen.
Also für jedes Unternehmen ca. 30-40 Quartalswerte die natürlich fluktuieren.
Ist es möglich mit Hilfe der Fourier Analyse diese Daten auszuwerten?
Wie lautet dazu ein Matlab Code?
Wie lese ich diese Daten in Matlab ein?
Gibt es kompakte und gute Einführungsliteratur zu Matlab?
Wenn du periodische Signale suchst, dann nimm lieber eine Korrelation. Ob das so gut mit der fft geht weiß ich nicht...
*edit*
Wenn du die einzelnen Spektren haben möchtest, so wie es den Anschein deiner Bilder macht, dann wie Harald bereits gesagt hat, die Hilfe durchlesen..dort ist es beschrieben und kann per copy/paste benutzt werden
Sagt dir die Fourierreihe etwas? Das ist ja die Grundlage der Fouriertransformation um ein Frequenzspektrum zu erhalten. Die Fourierreihe besteht aus einer Summe von cosinus und sinus Termen unterschiedlicher Frequenz und Amplitude. Jedes Signal lässt sich nämlich durch das aneinanderreihen solcher Einzelschwingungen nachbilden. Je nach dem wie lang diese Reihe fortgesetzt wird, desto besser ist die Approximation.
Das obere Bild zeigt das Frequenzspektrum des Betrags, wobei hier eben die in dem Signal befindlichen Einzelschwingungen nach Frequenz und Amplitude dargestellt werden. Das untere Bild stellt die Zerlegung des Signals in seine Einzelschwingungen dar...mit Gleichsignalanteil, Grundschwingung und Oberschwingung.
Code:
clear;
% Testsignal
Ts = 1/10000; % Abtastrate
N = 256; % Anzahl Messwerte das Testsignals
zeit = 0:Ts:(N-1)*Ts;
Fs = 1/Ts;
df = Fs/N; % Frequenzauflösung des Spektrums
f1 = df*10; % 1. Frequenz = ganzes vielfaches von df damit kein Leakage entsteht
f2 = df*50; % 2. Frequenz = ganzes vielfaches von df damit kein Leakage entsteht
Ampl1 = 8;
Ampl2 = 4;
offset = 10;
phase1 = (pi/3);
phase2 = 0;
signal = offset+(Ampl1*sin(2*pi*f1*zeit + phase1) + Ampl2*sin(2*pi*f2*zeit + phase2));
% FFT Berechnen
f = 0:df:(Fs/2)-df; % Frequenzvektor für Spektrum-Plot % Fouriertransformierte
SIGNAL = fft(signal); % Fouriertransformation
SIGNAL = SIGNAL / N; % Normierung
SIGNAL = [SIGNAL(1)2*SIGNAL(2:floor((N-1) / 2) + 1)]; % begrenzen auf f_max
% Frequenzvektor sortieren so dass später das Signal aus den Hauptfrequenzanteilen % wieder erzeugt bzw. approximiert werden kann [wert_f position_f] = sort(abs(SIGNAL));
for i=1:1:length(f)
f_(i) = f(position_f(length(position_f)-i+1));
phase_(i) = phase(position_f(length(position_f)-i+1));
betrag_(i) = wert_f(length(position_f)-i+1);
end
% Signal auf Grund der FFT-Werte erzeugen bis zur k-ten Harmonischen
k = 3;
phase = phase_;
betrag = betrag_;
% hier werden nun die Einzelschwingungen erstellt for i=1:1:length(zeit) for m=1:1:k
signal_FFT(:,m) = betrag(m)*cos(2*pi*f_(m)*zeit + phase(m));
end;
end
%% Plot der Berechnungen figure(1) subplot(311) plot(zeit,signal,'r','LineWidth',2);
xlabel('Zeit [s]');
ylabel('Signal y(t)');
title('Zeitsignal','FontSize',18);
grid on
subplot(312) stem(f,abs(SIGNAL),'r.','LineWidth',2,'Markersize',8);
xlabel('Frequenz [Hz]');
ylabel('Absolutwert');
title('Frequenzspektrum - Amplitude','FontSize',18);
grid on
subplot(313) plot(f,angledim(angle(SIGNAL),'radians','degrees'),'r.-','LineWidth',2,'Markersize',8);
xlabel('Frequenz [Hz]');
ylabel('Phase [Grad]');
title('Frequenzspektrum - Phase','FontSize',18);
grid on
figure(2) hold on;
plot(zeit,signal,'r','LineWidth',1);
color = ['k','b','g','c','m','y'];
for m=1:1:k
plot(zeit,signal_FFT(:,m),color(m),'LineWidth',2);
end hold off
title('Darstellung der Einzelschwingungen von Signal','FontSize',18);
legend('original Signal','Gleichsignalanteil','Grundwelle','1. Oberwelle');
xlabel('Zeit [s]');
ylabel('Signal y(t)');
grid on
pause closeall
Hier wird nun ein Testsignal, welches einen Gleichsignalanteil (Offset) sowie eine Grund- und eine Oberschwingung besitzt, mittels FFT zerlegt. Der erste Graph zeigt dir das Frequenzspektrum des Testsignals und der zweite, aus welchen Wellen das Signal sich zusammensetzt. Die Variable k bestimmt dabei, wie viele Einzelschwingungen dargestellt werden sollten. Beim Testsignal natürlich 3, da es nicht mehr enthält.
Bei einem realen Signal kann allerdings der Leck-Effekt oder Leakage auftreten, wodurch dieser Code dann nicht mehr ganz das richtige Ergebnis liefert. Du solltest dir mal anschauen, was man unter dem Effekt versteht und wie er sich auswirkt. Hier müssen dann einige Anpassungen an dem Code vorgenommen werden.
Hallo DSP und Danke für deine Antwort.
Bei mir ist es jetzt so das ich die Messwerte schon habe.
Sprich Exel Liste mit den EK Quoten (Quartalsweise).
Wie sieht dann der Code aus oder wie muss ich ihn umbauen. Hab ja dann keine Abtastrate oder Abtastfrequenz.
Eine Andere Frage ist macht das überhaupt Sinn? Wenn ich annahme das alle meine Messpunkte in einer Periode sind. Ich will ja versuchen abnormle entwicklungen herauszufiltern etc. sprich wenn die Entwicklung sich außerhalb der Norm bzw. eines Sicherheitspuffers verschlechtert?
Nun dann wird signal (in meinem Bsp das Testsignal) eben durch deine Werte ersetzt. Auch bei deinem signal gibt es eine Abtastrate...sie ist dann eben nicht in Bezug auf ein elektr. diskretes Signal sondern deine Zeitachse (z.B. Tage statt Sekunden).
Ob diese Auswertung Sinn macht, kann ich dir nicht beantworten....ich bin keine BWLer . Wenn du natürlich nur eine Periode und zu dem nur wenige Messpunkte hast, wird das Spektrum unter Umständen sehr ungenau (Thema Leakage). Dann könnten hier auch Ungenauigkeiten/Abweichungen entstehen, die zu falschen Interpretationen führen.
Danke für die Hilfe.
Mittlerweile steht die Auswertung und es kommt sogar was sinnvolles raus.
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.