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

Summe in Matrix

 

DH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 15:57     Titel: Summe in Matrix
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 21.04.2016, 16:11     Titel:
  Antworten mit Zitat      
Bis jetzt habe ich das. Er bearbeitet die erste Zeile erfolgreich, geht aber in die 2. nicht über.

Code:
j=0;
i=1;
k=1;
E=0;
rows=size(A,1);
columns=size(A,2);

for m=1:rows
    for i=1:columns
       

if A(m,i)>0

E(k,1)=E(k,1)+A(m,i);
i=i+1;
if A(m,i)<=0
k=k+1;
E(k,1)=0;
end

elseif A(m,i)<0

E(k,1)=E(k,1)+A(m,i);
i=i+1;
if A(m,i)>0
k=k+1;
E(k,1)=0;
end

else

E(k,1)=E(k,1)+A(m,i);
i=i+1;

end
 end
 end

edit winkow: bitte code umgebung verwenden
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.04.2016, 17:20     Titel:
  Antworten mit Zitat      
sowas?
Code:
a=[2 3 0 0 4;0 0 0 0 0; 0 5 3 0 4;14 4 0 1 1];
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))

grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DH

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2016, 21:56     Titel:
  Antworten mit Zitat      
wow funktioniert prima, vielen dank!!! sie haben mir sehr viel geholfen! Smile Smile
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]

vielen Dank schonmal!
beste Grüße
 
DH
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 22.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.04.2016, 19:06     Titel: Summe in Matrix mit Abstand-Bedingung
  Antworten mit Zitat      
Code:
clear all
a=[2 3 0 0 4;0 0 0 0 0; 0 5 3 0 4;14 4 0 1 1;0 0 0 0 0;0 0 0 7 9;0 0 0 0 0;0 0 0 0 0;9 6 0 0 1;1 1 1 0 0];
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)));
   
end
Reihe=ceil(idx1/size(a,2));  

for i=2:(numel(idx1))
    diff(i-1)=idx1(i)-idx2(i-1)-1;
end

indx=double(diff>3);


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!
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.