Verfasst am: 21.04.2016, 15:57
Titel: Summe in Matrix
Hallo, ich habe folgende Aufgabe: es sollen die Summen der Werte >0 in einer Matrix gebildet werden. zB A=[2 3 0 0 4;0 0 0 0 0, 0 5 3 0 4;14 4 0 1 1];
Gesucht werden nur die Summe der positiven Werte:
E=[5 4 8 22 2];
Der Zähler soll die Matrix also zeilenweise durchlaufen. Außerdem hätte ich gerne, dass bei jedem Schritt, in dem eine neue Summe gebildet wird die Reihe von A angezeigt wird.
Reihe=[1 1 3 3 4]
Kann mir jemand weiterhelfen?
vielen Dank! Gruß
DH
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.04.2016, 16:11
Titel:
Bis jetzt habe ich das. Er bearbeitet die erste Zeile erfolgreich, geht aber in die 2. nicht über.
a=[23004;00000; 05304;144011];
b=a';
idx1=find(diff([0;b(:);0]~=0)==1);
idx2=find(diff([0;b(:);0]~=0)==-1)-1;
for k=1:numel(idx1);
E(k)=sum(b(idx1(k):idx2(k)));
end
Reihe=ceil(idx1/size(a,2))
wow funktioniert prima, vielen dank!!! sie haben mir sehr viel geholfen!
Könnte man vielleicht noch eine Bedingung einführen: wenn der Abstand zwischen dem letzten Wert>0 (letztes Element einer Summe) und dem nächsten Wert>0(erstes Element der nächsten Summe) kleiner 3 Zellen/Elemente/Nullen ist, dass man die zwei Summen zusammenaddiert?
in unserem Beispiel wie folgt:
a=[2 3 0 0 4;0 0 0 0 0; 0 5 3 0 4;14 4 0 1 1];
E=[9 32]
Reihe=[1 3]
Verfasst am: 23.04.2016, 19:06
Titel: Summe in Matrix mit Abstand-Bedingung
Code:
clearall
a=[23004;00000; 05304;144011;00000;00079;00000;00000;96001;11100];
b=a';
idx1=find(diff([0;b(:);0]~=0)==1); %übergang von 0 auf >0
idx2=find(diff([0;b(:);0]~=0)==-1)-1; %übergang von >0 auf 0 for k=1:numel(idx1);
E(k)=sum(b(idx1(k):idx2(k)));
Ich habe jetzt meine matrix erweitert und die Differenz zwischen Ende einer Summe und Anfang nächster formuliert. Hat jemand einen Ansatz wie ich das weiter umsetzten kann um die zusammenhängende Summen zu bilden?
Bin um jede Hilfe sehr dankbar!
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
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.