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

20x30 Matrix bestimmte Elmente addieren

 

Max1990_2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.12.2011, 13:15     Titel: 20x30 Matrix bestimmte Elmente addieren
  Antworten mit Zitat      
Hallo zusammen

ich habe folgendes Problem:
ich soll in einer 20x30 Matrix alle negativen Elemente addieren wenn sie nicht auf der Hauptdiagonalen liegen, wie gehe ich vor?
ich bin neu im Umgang mit Matlab und stehe deshalb auf dem Schlauch


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.12.2011, 14:51     Titel: Re: 20x30 Matrix bestimmte Elmente addieren
  Antworten mit Zitat      
Hallo Max1990_2,

Dies scheint eine Hausaufgabe zu sein. Eine Lösung können wir also nicht posten. Welche Art von Hilfestellung benötigst Du dann?
Das übliche Vorgehen ist, dass Du zeigst, was Du bisher geschafft hast und erklärst, welche Probleme konkret auftreten.

Es gibt übrigens eine sehr kompakt Lösung in einer einzelnen Zeile.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Max1990_2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.12.2011, 18:08     Titel:
  Antworten mit Zitat      
ich wär folgerndermaßen vorgegangen
erst alle element der Matrix addiert
sum=sum(matrix)
davon dann die diagonelenelemente wiederum abziehen
mit diag (matrix)
und von dieser summe wieder alle positiven werte abgezogen aber
wie kann ich mir denn die positiven elemente herauspicken?
bzw nur die negativen was dann natürlich um einige krzer wäre
an dieser stelle hänge ich
 
morisq
Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 27.12.2011, 18:20     Titel:
  Antworten mit Zitat      
Idee:

1. Matrix Hauptdiagonale subtrahieren so das diese Werte = 0;
2. Restliche Matrix auf Negative Elemente untersuchen;
3. Sum(.....);
Private Nachricht senden Benutzer-Profile anzeigen
 
morisq
Forum-Century

Forum-Century


Beiträge: 140
Anmeldedatum: 24.06.11
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 27.12.2011, 18:29     Titel:
  Antworten mit Zitat      
Code:
A = [1 -2 5 6;2 -5 -6 -3;4 7 7 8]; % Hier steht deine Matrix
% Hauptdiagonale zu 0 setzen
i=1:size(A)+1:numel(A);
A(i)=0;
% Werte < 0 finden
k = A(A<0);
% Werte zusammenzählen
S1 = sum(k)
% Wenn du das Ergebnis als Betrag haben willst
S2 = sum(abs(k))
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: 27.12.2011, 18:30     Titel:
  Antworten mit Zitat      
Hallo Max1990_2,

Wenn Du Matlab-Code postest, ist es viel einfacher einen Ergänzungsvorschlag zu machen.

Das Summieren aller Elemente und das spätere Subtrahieren der ungewünschten birgt ein Risiko bei der Numerischen Anwendung: Es könnte einen Overflow bei den DOUBLE-Werten geben, wenn die Summe die größte exakt darstellbare Zahl überschreitet. Das ist zwar für eine kleine Test-Matrix mit "normalen" Werten unwahrscheinlich. Aber wenn man Numerik betreibt, sollte man gleich an die Ausnahmen denken.

Deshalb ist es besser, alle ungewünschten Elemente auf 0 zu setzen, bevor man die Summe bildet.
Noch effizienter wäre "logical indexing". Mit diesem Stichwort solltest Du genügend Themen in diesem Forum finden.

Gruß, Jan
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.