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

for-schleife nicht bei jeder run-ausführung aufsummieren

 

Samil
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2013, 13:45     Titel: for-schleife nicht bei jeder run-ausführung aufsummieren
  Antworten mit Zitat      
Hallo,

ich arbeite erst seit kurzem mit matlab und habe folgendes Problem.
Ich möchte in diesem Code, die Anweisungen der jeweiligen Bedingungen aufaddieren. Jedoch läuft meine for schleife nicht durch.

Code:


i1=1:1:97;
v_sp1; % Stützpunkte der v_ug
v_sp2; % Stützpunkte der v_og

% entfernen aller Nullen in Vektoren v_sp1 und v_sp2
v_sp1 = v_sp1(v_sp1~=0);  
v_sp2 = v_sp2(v_sp2~=0);  

% hinzufügen eines Vektors am Ende, sodass v_sp1 und v_sp2 gleiche länge haben
v_sp2 = [v_sp2;0];    


for i1 = [2:1:97]

      if v_sp2(i1-1) < v_sp1(i1-1) && v_sp2(i1) < v_sp1(i1-1)
   
          fall1 = [v_sp2(i1-1);v_sp1(i1-1);v_sp2(i1)];
       
      elseif v_sp2(i1-1) < v_sp1(i1-1) && v_sp2(i1) > v_sp1(i1-1)  
         
          fall2 = [v_sp2(i1-1);v_sp1(i1-1)];
       
      elseif v_sp2(i1-1) > v_sp1(i1-1) && v_sp2(i1) < v_sp1(i1-1)
       
          fall3 = [v_sp1(i1-1);v_sp2(i1)];
       
      end

end

v_sp=[fall1;fall2;fall3];

for i=1:1:97
    i1(i)=i;
end

 



ich hatte überlegt die anweisung folgendermaßen zu schreiben:

if v_sp2(i1-1) < v_sp1(i1-1) && v_sp2(i1) < v_sp1(i1-1)
fall1 = [fall1;v_sp2(i1-1);v_sp1(i1-1);v_sp2(i1)];

Ich weis leider nicht wie ich weiter machen soll.
Außerdem soll mein Programm nicht nach jeder run-Ausführung weiter aufsummieren.

Ich hoffe, dass ich meine Problemstellung erklären konnte und danke schonmal für jede Hilfe Wink


Grüße
Samil
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 20.08.2013, 13:50     Titel:
  Antworten mit Zitat      
Hallo Samil,

du könntest z.b. dein Fall1 bis 3 mit einem Index versehen und dann am Ende aufsummieren.
Ist wahrscheinlich nicht das schnellste, aber meiner Meinung nach verständlich.

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 20.08.2013, 18:51     Titel:
  Antworten mit Zitat      
Kascho hat Folgendes geschrieben:
Hallo Samil,
Ist wahrscheinlich nicht das schnellste, aber meiner Meinung nach verständlich.

Gruß, Kascho

wenn vorher der speicher reserviert wird ist das garnicht so langsam. oder du führst eine extra variable ein die das aktuelle ergebnis zum alten dazu adiert. braucht dann natürlich doppelten speicher aber das ist meist nicht das problem.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 00:23     Titel:
  Antworten mit Zitat      
Hallo Kascho,

ich habe das nicht ganz verstanden, kannst du ein kurzes beispiel machen, wie ich es mit indizes versehen soll.

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Florre
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 28.02.13
Wohnort: ---
Version: R2009a, R2016b
     Beitrag Verfasst am: 22.08.2013, 07:54     Titel:
  Antworten mit Zitat      
Hallo Samil,

bekommst du denn eine Fehlermeldung??

Zitat:
Ich möchte in diesem Code, die Anweisungen der jeweiligen Bedingungen aufaddieren. Jedoch läuft meine for schleife nicht durch.


wenn nicht vlt. läuft sie ja doch durch und ein anderer Fall tritt auf...

Code:
v_sp2(i1-1) > v_sp1(i1-1) && v_sp2(i1) > v_sp1(i1-1)
 


Lg Florre
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 22.08.2013, 09:35     Titel:
  Antworten mit Zitat      
Hi nochmal,

Code:

fall1=zeros(97,1)
fall2=zeros...
a=1;
b=1;
c=1;

for ...
if ...
fall1(a)=...
a=a+1;
elseif ...
fall2(b)=...
b=b+1;
fall3(c)=...
c=c+1;
end

fall1sum=sum(fall1);
...
 


System und Idee verstanden?

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 13:05     Titel:
  Antworten mit Zitat      
Hi Kascho,

ich habe bemerkt, dass ich mich nicht verständlich ausgedrückt habe.
Ich habe geschrieben, dass ich die verschiedenen fälle aufsummieren möchte, jedoch wollte ich damit ausdrücken, dass für die gefundenen Fälle die jeweiligen Werte in einem Vektor v_sp gespeichert werden sollen.

Also jeder neu gefundene Werte in diesen Vektor speichern.

Sorry nochmals, dass ich mich nicht ausführlich ausgedrückt habe.

Viele Grüße

Samil
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.08.2013, 13:08     Titel:
  Antworten mit Zitat      
wenn du die werte nicht speichern willst//kannst
Code:
fall1=zeros(97,1)
fall2=zeros...
a=1;
b=1;
c=1;
summe=0;
for ...
if ...
fall1=...
summe=summe+fall1;
elseif ...

...

geht auch
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 13:09     Titel:
  Antworten mit Zitat      
Hi,

hier habe ich diesen Code nochmal geändert.

Code:


for i1 = 2:1:97

      if v_sp2(i1-1) < v_sp1(i1-1) && v_sp2(i1) < v_sp1(i1-1)
          fall(i1-1) = v_sp2(i1-1);
          fall(i1) = v_sp1(i1-1);
          fall(i1+1) = v_sp2(i1);
          %fall1 = [v_sp2(i1-1);v_sp1(i1-1);v_sp2(i1)];
                           
      elseif v_sp2(i1-1) < v_sp1(i1-1) && v_sp2(i1) > v_sp1(i1-1)
          fall(i1-1) = v_sp2(i1-1);
          fall(i1) = v_sp1(i1-1);
          %fall2 = [v_sp2(i1-1);v_sp1(i1-1)];
         
         
      elseif v_sp2(i1-1) > v_sp1(i1-1) && v_sp2(i1) < v_sp1(i1-1)
          fall(i1-1) = v_sp1(i1-1);
          fall(i1) = v_sp2(i1);
          %fall3 = [v_sp1(i1-1);v_sp2(i1)];
         
      end
     
       %v_sp = [fall1; fall2; fall3];
       v_sp = fall;
 end

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 22.08.2013, 13:24     Titel:
  Antworten mit Zitat      
Und was macht der Code? Funktioniert? Fehlermeldung? Unerwartetes Ergebnis?
Tritt immer eine der Bedingung deiner if / elseif Konstruktion auf?

Falls du Probleme mit der länge der einzelnen Vektoren hast, dann könntest du auch Cells verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 13:38     Titel:
  Antworten mit Zitat      
Der Code gibt keine Fehlermeldung, jedoch im workspace ist der fehler zuerkennen.

Beispiel 1.Bedingung:

für i1=2 läuft der Code und es werden die ersten 3 Werte in mein Vektor v_sp geschrieben.
für i1=3 werden weitere 3 Werte in v_sp gespeichert, jedoch werden dabei die letzten zwei werte überschrieben (also die Plätze in dem die Werte stehen, mit den Neuen belegt.

Dies soll nicht der Fall sein. Es sollen dann die Werte nach und nach gespeichert werden
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 13:42     Titel:
  Antworten mit Zitat      
ich habe mal eine grafik angehängt, damit das problem anschaulicher wird.

figure1.png
 Beschreibung:

Download
 Dateiname:  figure1.png
 Dateigröße:  90.03 KB
 Heruntergeladen:  343 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 22.08.2013, 13:44     Titel:
  Antworten mit Zitat      
ja, deswegen hatte ich ja oben die Indexe a,b und c genommen.

Oder du musst bei deiner for schleife oder deine Inkrementierung ändern...

Die Frage ob eines der Ereignisse bei jedem Durchlauf definitiv eintritt wurde auch noch nicht beantwortet.

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Samil
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 20.08.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 13:45     Titel:
  Antworten mit Zitat      
hierbei sind v_sp1 die lila Punkte und v_sp2 die schwarzen Punkte
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.08.2013, 13:46     Titel:
  Antworten mit Zitat      
wenn du 2 werte mit einer index variablen speichern willst must du entweder mehr dimensionen nehmen oder eine cell.
du überschreibst natürlich immer mit dem index I-1 den wert den du im letzten druchlauf bei I hattest.
_________________

richtig Fragen
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.