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

Summieren in Abhängigkeit von anderer Spalte

 

Carolin-th

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2013, 16:54     Titel: Summieren in Abhängigkeit von anderer Spalte
  Antworten mit Zitat      
Hallo an alle.
Ich bräuchte mal eure Unterstützung bei der Bildung von blockweisen Summen. Mein Problem ist folgendes: ich habe Niederschlagswerte in 2 Minuten Intervallen, bräuchte sie aber in Tagesintervallen.

Folgendes ist gegeben:
Ich habe eine Matrix
A(:,1) = Index
A(:,2) = Day
A(:,3) = Precipitation

Die Spalte Day gibt den Tag an (ohne Monat und Jahr, also nur 1, 2, 3 u.s.w., ich könnte den Monat aber hinzufügen wenn das helfen würde). Für jeden Tag gibt es mehrere Niederschlagswerte. Es gibt also mehrere Zeilen mit dem Day 1, dem Day 2, etc. Die möchte ich jetzt zusammenaddieren. Am Ende soll nur noch day 1 mit kompletten Niederschlag an diesem Tag stehen, darunter Tag 2 mit Niederschlag an dem Tag etc.
Leider fehlen ab und zu einzelne Werte, die Blöcke sind also nicht exakt gleich lang. Es müssten also alle Niederschlagswerte aufaddiert werden, bis sich in der 2. Spalte die Zahl ändert.

Ich hoffe ihr versteht worauf ich hinaus möchte. Ich bin nicht so gut in Matlab-Sprache.


Um es zu veranschaulichen.
So könnte man es sich im Moment vorstellen
1 1 0
2 1 0
3 1 0.1
4 1 0.3
5 1 0
6 2 0.4
7 2 0.1
8 2 0
9 2 0
.......

Und rauskommen sollte wenn möglich
1 1 0.4
2 2 0.5
...........

Vielen Dank schonmal für Antworten!
LG Carolin


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 16.10.2013, 17:34     Titel:
  Antworten mit Zitat      
Hallo Carolin,

gibt sicherlich schönere und schnellere Lösungen, aber als Ansatz:

Code:

x(:,1)=1:15;
x(1:5,2)=1;
x(6:10,2)=2;
x(11:15,2)=3;
x(:,3)=rand(1,15);

m=1;
mm=1;
for k=1:length(x)-1
   if x(k,2)==x(k+1)
      ns(m,mm)=x(k,3);
      m=m+1;
   else
     ns(m,mm)=x(k,3);
     mm=mm+1;
     m=1;
    end
end

ns(m,mm)=x(end,3);
nssum=sum(ns,1);
 


Ist wie gesagt nicht besonders pralle, aber ist ja auch bald Feierabend Wink

Gruß, Kascho
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2013, 21:54     Titel:
  Antworten mit Zitat      
vielleicht so:
Code:
values=[1,1,0
2,1,0
3,1,0.1
4,1,0.3
5,1,0
6,2,0.4
7,2,0.1
8,2,0
9,2,0]
sums = full(sum(sparse(values(:,1),values(:,2),values(:,3))))
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.10.2013, 23:03     Titel: Re: Summieren in Abhängigkeit von anderer Spalte
  Antworten mit Zitat      
Hallo Carolin-th,

Code:
values=[1,1,0
2,1,0
3,1,0.1
4,1,0.3
5,1,0
6,2,0.4
7,2,0.1
8,2,0
9,2,0];
A = unique(values(:, 2));
B = accumarray(values(:, 2), values(:, 3));
Result = [A, B];

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Carolin-th

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2013, 10:47     Titel: Error
  Antworten mit Zitat      
Danke für eure Antworten.
Leider funktionieren die Vorschläge nicht bei mir.
Es kommt immer der Error:

"Undefined variable values."

Weiß vielleicht einer woran das liegen könnte?
LG Carolin
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.10.2013, 14:30     Titel: Re: Error
  Antworten mit Zitat      
Hallo Carolin-th,

Die Fehlermeldung ist eigentlich klar, oder?
Offenbar benutzt Du nur einen Teil der hier geposteten Vorschläge. Denn wenn Du die gesamten Vorschläge kopieren würdest, wäre die Definition von "values" enthalten.

Du hattest in Deiner Frage den Namen der Input-Werte nicht definiert, sondern nur recht vage geschrieben "So könnte man es sich im Moment vorstellen". Deshalb habe wir die Daten mal "values" genannt. Aber in Deinem Code musst Du natürlich die von Dir genutzten Variablen-Namen verwenden.

Gruß, Jan
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.