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

Schleife kreieren

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 12:44     Titel: Schleife kreieren
  Antworten mit Zitat      
Hallo!
Habe Basiskenntnisse in Matlab und brauche ihre Hilfe! Wie kann ich ein Algorithmus kreieren, der folgende Berechnungen durchführt.

Ich habe einen Vektor X von Zufallsvariablen von 10 bis 70 und anderen Y von 0 bis 1. X und Y hat die gleiche Dimension. Wenn die Zufallsvariable von X größer als 60 ist, soll der Algorithmus zwei nächste Werte von Vektor Y nehmen und die Iteration dann nach zwei Schritten wieder fortsetzen, ungeachtet dessen, dass der nächste Wert wieder größer als 60 sein kann . Wenn die Zufallsvariable kleiner als 60 ist wird Null geschrieben.
Z.B X=[50, 70, 65, 59, 49]
Y=[ 0.1, 0.1, 0.2, 0.3, 0.4]

Der Algorithmus durchsucht den Vektor X und findet, dass zweites Element von X größer als 60 ist. Er nimmt dann zweites und drittes Element von Y und setzt die Iteration nach zwei Elementen wieder fort. Der neu kreierte Vektor Z hat dann die Werte Z=[0, 0.1, 0.2, 0,0]
Danke!


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 05.11.2009, 14:59     Titel:
  Antworten mit Zitat      
Hallo,

mir zumindest ist der Algorithmus nicht klar.
- Soll Z die selbe Größe haben wie X und Y
- Sehe ich es richtig, dass im Prinzip der Vektor Y gebildet wird durch
Z(i) = Y(i) falls X(i)>60 oder X(i-1)>60

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 15:59     Titel:
  Antworten mit Zitat      
Z soll die gleiche größe haben wie X und Y.

Z(i) = Y(i) falls X(i) > 60

ansonsten Z(i) = 0

aber wenn X(i) >60 dann auch Z(i+1)=Y(i+1) und Z(i+2) = Y(i+2)

und die nächte Iteration findet am X(i+3) statt.
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 05.11.2009, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

o.k., wie wäre es mit
Code:
index = find(X>60);
index = [index index+1 index+2];
index(index>length(X))=[];
Z = zeros(size(X));
Z(index) = Y(index);
 


Ciao,
Titus

Zuletzt bearbeitet von Titus am 05.11.2009, 17:24, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 17:15     Titel:
  Antworten mit Zitat      
Hi,

Danke für den Vorschlah! Aber nach Deinem Code bekomme ich die Antwort

Z =

0 0 0 0 0

So soll es nicht sein. Z sollete so aussehen: [0, 0.1, 0.2, 0,0]
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 05.11.2009, 17:24     Titel:
  Antworten mit Zitat      
Hallo,

meine Bedingung war falsch, hab's korrigiert ...
Allerdings: müsste der letzte nicht 0.4 sein? Da der dritte ja auch größer als 60 ist, oder muss der ignoriert werden, da wir noch den vorherigen Schritt abarbeiten ...?
Noch eine Nachfrage: was ist mit der 0.3, oben schreibst Du Y(i+1), Y(i+2), was die 0.3 wäre, im "Lösungsvektor" aber steht eine 0? Vielleicht gibst Du doch noch ein etwas ausführlicheres Beispiel, um die Fragen zu klären ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 19:09     Titel:
  Antworten mit Zitat      
Hi,

Vielen Dank, dass Du mir hilfst:) Und sorry, dass ich meine Gedanken so undeutig formuliere.
In unserem Beispiel muss der Algorithmus im Vektor X den Wert größer 60 suchen. Wenn er den Wert größer 60 findet X(i) soll er in Lösungsvektor Z(i) den Wert Y(i) einschreiben und auch Y(i+1). Gleichzeitig, wenn ein Wert größer 60 gefunden wird, untersucht er nicht den nächsten Wert in Vektor X, sondern fingt ab i+2 weiter an.

Ein Beispiel aus dem Leben sieht so aus: Ich kaufe den Gut nur dann, wenn der Preis größer als 60 ist. Und halte den Gut zwei Tage. Nach zwei Tagen verkaufe ich den Gut, ungeachtet des Preises auf dem Markt. Auch wenn am nächsten Tag der Preis höher als 60 ist, kaufe ich nicht zusätzlich, weill ich nur ein Mal kaufen kann. Danach muss ich mein Gewinn/ Verlust kalkulieren. (Vektor Z).
 
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.