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

Vektor effizient mehrfach teilweise auslesen

 

Pinky
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2011, 10:27     Titel:
  Antworten mit Zitat      
Hallo Hristo

leider komme ich mit der Matlab-Hilfe zu dem Befehl nicht klar. Kann jemand das Beispiel 1 erläutern?

Code:
Examples
Example 1

Create a 5-by-1 vector and sum values for repeated 1-D subscripts:

val = 101:105;
subs = [1; 2; 4; 2; 4]
subs =
     1
     2
     4
     2
     4

A = accumarray(subs, val)
A =
   101       % A(1) = val(1) = 101
   206       % A(2) = val(2)+val(4) = 102+104 = 206
     0       % A(3) = 0
   208       % A(4) = val(3)+val(5) = 103+105 = 208


warum ist das dritte 0 und wo kommen 3 und 5 her?

gruß Michael
Private Nachricht senden Benutzer-Profile anzeigen


lilov
Forum-Century

Forum-Century


Beiträge: 193
Anmeldedatum: 05.05.10
Wohnort: Bremerhaven
Version: ---
     Beitrag Verfasst am: 15.11.2011, 10:46     Titel:
  Antworten mit Zitat      
Hallo,

accumarray führt eine Funktion aus auf Werte mit gleichen Indeces (subs).

Bsp.:

Code:



a = [1 1 1 2 2 2 2 3 3]';
b = ones(9,1);
sumB = accumarray(a,b,[],@sum)

 



accumarray summiert also die Elemente in b nach den Indeces in a.


Gruß,

Hristo
Private Nachricht senden Benutzer-Profile anzeigen
 
Pinky
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2011, 10:50     Titel:
  Antworten mit Zitat      
Super vielen Dank, das dürfte klappen.

gruß Michael
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: 15.11.2011, 12:43     Titel:
  Antworten mit Zitat      
Hallo Pinky,

Zitat:
Code:
Con = [ 1, 2, 0, 0; 3,4,5,0;6,0,0,0;7,8,9,10];
Vektor = 1:10;
B = sum(Vektor(Con),2)  % ERROR

Es wäre hilfreich, wenn Du entweder lauffähigen Matlab Code posten würdest, oder aber die gewünschten numerischen Ergebnisse. Wenn ich als gewünschtes Ergebnis Code sehe, der nicht läuft, muss ich raten, was Du genau suchst.

Zitat:
Code:
function [Erg]=summe(Con,vektor)
Dummy = zeros(size(Con));
Dummy(logical(Con'))=vektor;
Erg = sum(Dummy',2)

Ist das zweimalige Transponieren wirklich hilfreich oder verschwendet es nur Zeit? Immerhin ist "sum(X', 2)" das gleiche wie "sum(X, 1)".

Wieso kannst Du keine Schleife verwenden, wenn ein Unterprogramm möglich ist?!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.