|
|
bedingte Summe über einen Teil eines Vektors |
|
professor_matlab |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:05
Titel: bedingte Summe über einen Teil eines Vektors
|
 |
Hallo Matlab Forum,
ich habe folgendes Problem:
Ich möchte eine Summe über einen Teil eines Vektors bilden, aber nur von bestimmten Elementen.
Zum Beispiel sei der Vektor mal
A = [5;4;3;2;1;1;2;3;4;5];
Ich möchte alle Elemente summieren, die im Bereich von Index 3 bis Index 8 liegen UND die größer als 1 sind.
Die Lösung wäre also 3+2+2+3 = 10.
Ich weiß, wie ich eine bedingte Summe bilden kann.
sum(A(A>1));
Ich weiß, wie ich eine Summe über einen Bereich bilden kann.
sum(A(3: );
Eine Kombination aus beidem ergibt 11.
sum(A(A(3: >1));
ans = 11
Daher ich weiß nicht, wie ich das kombinieren kann (ohne Schleifenkonstrukt).
Danke für eure Hilfe
|
|
|
|
|
professor_matlab |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:06
Titel:
|
 |
smileys.....
Da steht jeweils
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:12
Titel:
|
 |
professor_matlab hat Folgendes geschrieben: |
smileys.....
Da steht jeweils
|
deswegen auch die code umgebung benutzen ^^
_________________
richtig Fragen
|
|
|
jurtsche |

Forum-Century
|
 |
Beiträge: 123
|
 |
|
 |
Anmeldedatum: 26.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:14
Titel:
|
 |
naja...
du könntest übers logische indizieren, alle die kleiner deines indexes sind auf 0 setzen... quasi
9 und 10 ist eh egal, weils dann sowieso nicht geommen wird.
schön ist es nicht.
PS: winkow hat in der zwischenzeit schon schönere lösung gepostet
|
|
|
professor_matlab |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:26
Titel:
|
 |
Winkow hat Folgendes geschrieben: |
professor_matlab hat Folgendes geschrieben: |
smileys.....
Da steht jeweils
|
deswegen auch die code umgebung benutzen ^^
|
Vielen Dank!
Könntest du vielleicht kurz beschreiben, was genau das .* macht und wie sich die Lösung logisch zusammensetzt?
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:27
Titel:
|
 |
.* heist elementweise multiplikation.
erzeugt einen vektor aus 0 und 1 der 1 da hat wo die elemnte größer als 1 sind. bei der multiplikation werden alles alle werte die kleiner als 1 sind auf 0 gesetzt.
_________________
richtig Fragen
|
|
|
professor_matlab |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2014, 11:37
Titel:
|
 |
Winkow hat Folgendes geschrieben: |
.* heist elementweise multiplikation.
erzeugt einen vektor aus 0 und 1 der 1 da hat wo die elemnte größer als 1 sind. bei der multiplikation werden alles alle werte die kleiner als 1 sind auf 0 gesetzt. |
again, danke!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|