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

Addieren bis Bedingung erfüllt ist

 

Dexter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2014, 22:56     Titel: Addieren bis Bedingung erfüllt ist
  Antworten mit Zitat      
Nabend Leute,

stehe vor einem Problem...und zwar habe ich zwei Vektoren. In einem befinden sich Dezimalwerte (25998x1 double) und in dem anderen Vektor befindet sich entweder eine Null oder eine Eins (25998x1 double).

Nun möchte ich unten beginnend alle Werte in Vektor 1 addieren bis in Vektor 2 eine 1 kommt (vorher ist es dementsprechend immer Null). Der Wert bei der 1 soll mit addiert und der Gesamtwert anschließend in eine neue Variable geschrieben werden.
Dann das Ganze wiederholen, bis der Vektor abgearbeitet ist. Wurde eine eins erreicht und direkt danach kommt direkt noch eine eins, soll nur der passende Wert aus Vektor zwei zu der zweiten eins geschrieben werden.

Ist etwas kompliziert zu erklären, hoffe das war halbwegs verständlich.

Vielleicht noch an einem Beispiel:

Vektor 1:
Code:

Werte = [1;2;3;4;5;6;7;8;9;10;11;12;13;14];
 

Vektor 2:
Code:

Lauf = [0;0;0;0;1;0;0;1;1;0;0;0;0;1]
 


Es sollen also die Werte 1,2,3,4 und 5 zusammengezählt werden. Als nächstes ist es dann 6,7 und 8. Der nöchste ist 9. Zuletzt 10,11,12,13,14 zusammengenommen.

Der Ergebnisvektor sollte also ao aussehen:
Code:

Erg = [15;21;9;60]
 


Habe es mit einer while-Schleife in einer for-Schleife versucht...hat aber nicht wirklich Früchte getragen...

Viele Grüße,
Dexter
Private Nachricht senden Benutzer-Profile anzeigen


Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2014, 01:34     Titel:
  Antworten mit Zitat      
Okay, habe es hinbekommen. Falls es wen interessiert, hier mein Code:

Code:

clc
% Laden von Daten aus Excel
[a,b,c]=xlsread('Mappe3.xlsx','Tabelle1');
% Erstellen der benötigten Variablen
Minuten = a(2:end,2);
Minuten = flipud(Werte); % drehen der Variable
Lauf = c(2:end,4);
Lauf = flipud(Lauf);  % drehen der Variable

Lauf_finden = find(ismember(Lauf,'1')); % finden wo Variable = 1

for m = 1:1:length(Lauf_finden)
    Lauf_finden_neu(m) = Lauf_finden(m,1)-1; % Werte in Variable Lauf um 1 zurück
end

Lauf_finden_neu = Lauf_finden_neu'; % Transponieren

j=1;
% Werte berechnen
for i = 1:1:length(Lauf_finden_neu)
        Erg{i}=sum(Werte(j:Lauf_finden_neu(i,1),1));
        j=1;
        j=j+Lauf_finden_neu(i,1);
end
 


Falls wer Verbesserungsvorschläge hat, immer her damit. Lerne ja gerne dazU! Very Happy
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.