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

Brauche Hilfe! Matlab für BWL Auswertung Fourier Analyse

 

nihilist86
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2012, 16:01     Titel: Brauche Hilfe! Matlab für BWL Auswertung Fourier Analyse
  Antworten mit Zitat      
Hallo zusammen,

bräuchte für eine BWL Auswerutng eure Hilfe.

Kenn mich leider noch nicht mit Matlab aus.

Daher meine Fragen:

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?

Vielen Dank und viele Grüße
Stefan Binder
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.10.2012, 20:08     Titel:
  Antworten mit Zitat      
Hallo,

in welcher Form liegen die Daten denn vor? Falls es Excel ist, kannst du zum Einlesen XLSREAD verwenden.

Natürlich kannst du da dann eine Fourieranalyse (Befehl: FFT) drüber laufen lassen; die Frage ist eher, welche Ergebnisse du dir davon erhoffst.

Hier ist z.B. eine Liste von Büchern zu MATLAB:
http://www.mathworks.de/support/books/

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
nihilist86
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2012, 20:39     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort!

das mit den einlesen habe ich mitlerweile im Griff.

Mit den Ergebnissen von fft kann ich noch nicht so viel anfnagen.

Konkret habe ich gewisse Daten wie sich sich über einen bestimmten Zeitraum entwickeln.

Ich habe irgendwo gelesen das man aus diesen chaotischen daten Schwingungen mit Hilfe der Fourier analyse herausfiltern kann.

Siehe meine beiden Bilder im Anhang!

Wie ist dies mit der fourier Analyse möglich?

VG
Stefan

fourier2.png
 Beschreibung:
Dominanz der jeweiligen Schwingungen.

Download
 Dateiname:  fourier2.png
 Dateigröße:  3.72 KB
 Heruntergeladen:  1048 mal
Fourier 1.png
 Beschreibung:
gestrichelte linie ist der Datensatz. Die anderen linien sind die Schwingungen die sich aus der Fourieranalyse ergeben.

Download
 Dateiname:  Fourier 1.png
 Dateigröße:  8.59 KB
 Heruntergeladen:  1043 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.10.2012, 21:17     Titel:
  Antworten mit Zitat      
Hallo,

üblicherweise schaut man sich bei der FFT ein Spektrum und dessen Peaks an, siehe Doku zu fft.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Caravaggio
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 86
Anmeldedatum: 20.04.12
Wohnort: Braunschweig
Version: R2012a
     Beitrag Verfasst am: 07.10.2012, 11:04     Titel:
  Antworten mit Zitat      
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
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: 08.10.2012, 16:07     Titel:
  Antworten mit Zitat      
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_;

% preallocate
signal_FFT  = zeros(length(zeit),k);

% 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
close all
 


Der Code ist eine Abwandlung aus diesem Thread:
http://www.gomatlab.de/grundwelle-e.....highlight,grundwelle.html

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.
Private Nachricht senden Benutzer-Profile anzeigen
 
nihilist86
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2012, 16:07     Titel:
  Antworten mit Zitat      
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?

Vielen Dank
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: 21.10.2012, 19:13     Titel:
  Antworten mit Zitat      
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 Wink. 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.
Private Nachricht senden Benutzer-Profile anzeigen
 
nihilist86
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2012, 17:05     Titel:
  Antworten mit Zitat      
Danke für die Hilfe.
Mittlerweile steht die Auswertung und es kommt sogar was sinnvolles raus.
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.