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

Rolling Windows

 

Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2011, 12:17     Titel: Rolling Windows
  Antworten mit Zitat      
Hallo

Ich habe einen Vektor mir 1305 Zeilen von Returns. Gerne möchte ich wissen, welche Returns die Bedingung erfüllen, dass sie grösser sind als der Mittelwert der letzten 30 Returns + 2 * Standardabweichung der letzten 30 Tage.

Hier mein Code:

Code:

A = returns;
for x=1:30:1275, A(x:(x+29));
    for y =1:30:1275, std(A(x):A(x+29));
       
 B = A  > (mean (A(x:(x+29))) + 2 * std(A(x):A(x+29)));
    end
end
 


Jetzt meine Frage: Funktioniert das so? Ich habe leider keine Möglichkeit es anhand des Ergebnisses zu testen.

Im Endeffekt soll ein Vektor B rauskommen, der eine 1 zeigt, wenn die Bedingung erfüllt ist.

Danke für eure Hilfe...

Gruess Adi


Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2011, 12:18     Titel:
  Antworten mit Zitat      
Sad sollten ein eine Klammer ) und ein : sein...

sorry..
 
Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2011, 14:06     Titel:
  Antworten mit Zitat      
Habe den Code nochmals verbessert:
Code:

A = returns;
for x=31:30:1275, A=x:(x+29);
    for y =1:30:1275, std=A(y):A(y+29);
       
 B = A  > (mean (A(x:(x+29))) + 2 * std(A(y):A(y+29)));
    end
end
 


Jetzt sollte er mit der Standardabweichung der letzten 30 Tage den heutigen Return überprüfen...

Gruss
Edit by _Peter_: Bitte Codeumgebung benutzen!Danke.
 
Adi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2011, 14:30     Titel:
  Antworten mit Zitat      
bei diesem Code kommt jetzt:
Code:

??? Index exceeds matrix dimensions.

Error in ==> Code at 12
 B = A  > (mean (A (x:(x+29))) + 2 * std(A(y):A(y+29)));
 

was ist falsch?

Gruss
Edit by _Peter_: Bitte Codeumgebung benutzen und keine Doppelpostings!Danke.
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 28.04.2011, 21:30     Titel:
  Antworten mit Zitat      
Hallo Adi,
du greifst auf ein Element ausserhalb der Matrix zu, deswegen geht das schief.

Am besten du gehst mit dem Debugger dran und guckst dir x und y an wenn der Fehler auftritt und vergleichst das mit den Dimensionen der Matrix.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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 - 2025 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.