Ich habe zwei Cells: S ist ein 1x15 cell, das vektoren enthält (das zimmernummern in form von zahlen) R ist ebenfalls ein 1x15 cell, das vektoren enthält (Werte, für diese zimmer).
Ich möchte jetzt diese Werte aus R zusammenzählen, in der Form
Nun ist jetzt aber mein Problem, dass nicht alle Zimmernummer in jedem Vektor vorkommen, so kann es sein, dass S{1} zB. nur 120 anstatt 178 Werte hat und gewisse Zimmernummern fehlen. Diese Fehlwerte habe ich mit NaN aufgefüllt, dass alle Vektoren, die in S enthalten sind die gleiche Länge haben.
Nur wie kann ich jetzt Matlab sagen, dass es immer nur die gleichen Zimmernummern zusammenzählt?
Ich verstehe die Frage noch nicht. Das Auffüllen mit NaNs wird mir nicht klar. Ein vereinfachtes Beispiel mit 4 Vektoren und 6 "Zimmernummern" wäre vielleicht hilfreich.
Vielleicht hilft dies:
Code:
D = cat(1, R{:});
D(isnan(D)) = 0;
Result = sum(D, 1);
Und das möchte ich jetzt addieren, jedoch nicht elementenweise (R{1}(1)+R{2}(1) + R{3}(1) ... ) sondern ich möchte, dass die Bedingung erfüllt wird, dass nur R-Werte zusammengezählt werden, bei denen auch die Zimmernummer übereinstimmt.
In diesem Beispiel würde die Zimmernummer A{1}(1) bis A{3}(1) zusammenpassen und R kann addiert werden (1+0+1). Bei A{1}(2) bis A{3}(2) dürfte nur mehr R{1}(2) und R{3}(2) addiert werden.
Matlab soll nur R-Werte der gleichen Zimmernummer addieren.
Ich hoff, dass hilft einigermaßen weiter.Danke auf jeden Fall!
Als Beispiel wäre valide Matlab-Syntax brauchbar. Ich kann mir das zwar nun vorstellen, aber nicht einfach per Copy&Paste in mein Command-Window kopieren, um eine Lösung auszuprobieren.
Das Beispiel habe ich nicht verstanden. Wieso gibt es für die Zimmernummer "NaN" einen dazugehörigen R-Wert? Wozu dient das Auffüllen mit NaNs, also wozu sollen die Vektoren die gelcieh Länge haben?
Gruß, Jan
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.09.2012, 13:11
Titel:
Jan S hat Folgendes geschrieben:
Als Beispiel wäre valide Matlab-Syntax brauchbar.
Leider weiss ich nicht, was damit gemeint ist. Ich habe mir mal ein paar Werte von matlab ausgeben lassen und kopier die mal rein:
Und wenn Du nun einwendest, dass die Dokumentation von ACCUMARRAY nicht besonders verständich ist - stimmt. Ich zumindest verstehe sie nicht. Ein Enhancement-Report an den Technischen Support wäre eine gute Idee.
Gruß, Jan
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.09.2012, 12:16
Titel:
hey,
danke, auf das wär ich nie gekommen. Ich hab jetzt nur mehr ein Problem, das ich nicht verstehe:
Wenn ich deinen Code eingebe, bekomme ich bei der Zeile folgende Fehlermeldung:
Code:
[~, ~, index] = unique(vS);
Expression or statement is incorrect--possibly unbalanced (, {, or [.
ja, so funktioniert es. Jetzt habe ich aber in der nächsten Zeile einen Fehler:
??? Error using ==> accumarray
Second input VAL must be a vector with one element for each row in SUBS, or a scalar.
Error in ==> sumR = accumarray(index, vR, [], @sum);
Hängt das auch mit der Matlab-Version zusammen?
LG, michi
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.09.2012, 07:25
Titel:
Hallo nochmal!
Ich probiert jetzt schon seit Tagen, diese Fehlermeldung zu korrigieren, nur
Komm ich einfach nicht auf die richtige Losung. Um ehrlich zu sein, ich Versteh auch nicht so richtig, was dieser Befehl macht.
ja, so funktioniert es. Jetzt habe ich aber in der nächsten Zeile einen Fehler: ??? Error using ==> accumarray ...
Wenn ich den von mir geposteten Code in R2009a oder R2011b laufen lasse, bekomme ich keinen Fehler. Ich vermute, Du benutzt andere Input-Daten. Solange ich diese nicht kenne, kann ich keinen Ratschlag geben, wie man das Problem beheben könnte. Was ist der Unterschied zwischen den Test-Daten und Deinen realen Daten?
ACCUMARRAY hat sich meines Wissen nach in der Vergangenheit nicht geändert. Aber vielleicht solltest Du trotzdem Deine Matlab-Version nennen.
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
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.