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

Zeile in Matrix löschen, wenn Wert in Spalte 4 = 0

 

Sebbl
Forum-Century

Forum-Century


Beiträge: 131
Anmeldedatum: 09.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 10:49     Titel: Zeile in Matrix löschen, wenn Wert in Spalte 4 = 0
  Antworten mit Zitat      
hi,

ich hoffe ihr könnt mir wiedermal etwas auf die Sprünge helfen Smile
Ich suche einen Syntax, mit welchem ich meine Matrix M auf Spalte 4 überprüfen kann.
Wenn der Wert in Spalte 4 0 entspricht, soll die ganze Zeile der Matrix gelöscht werden.

Zur Zeit tendiere ich zu "any" weiß aber nicht genau, wie ich festlege, dass nur auf Spalte 4 überprüft wird.

Gruß Sebbl

P.S.: es können auch andere Spalten existieren in denen auch eine 0 steht -> dann soll die Zeile jedoch nicht gelöscht werden
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 11:12     Titel:
  Antworten mit Zitat      
Hallo,

vielleicht hilft dir

Code:

if any(DeineMatrix(:,4)==0);
clear DeineMatrix;
end
 


weiter. Sobald auch nur ein Element in Spalte 4 deiner Matrix den Wert 0 hat, wird die Matrix gelöscht.

ciao
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 11:17     Titel:
  Antworten mit Zitat      
Huch,

ja, wer lesen kann ist klar im Vorteil Laughing

Da habe ich doch glatt übersehen, dass du nur die Spalte 4 löschen willst Wink

Also hier die Korrektur:

Code:

if any(DeineMatrix(:,4)==0);
DeineMatrix(:,4)=[];
end
 


So wird nicht gleich alles in digitale Nirvana verabschiedet, sondern nur Spalte 4 Cool

ciao
 
Sebbl
Themenstarter

Forum-Century

Forum-Century


Beiträge: 131
Anmeldedatum: 09.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 11:23     Titel:
  Antworten mit Zitat      
nicht ganz....

vielleicht hab ich mich doch etwas kompliziert ausgedrückt.
Also ich möchte die Matrix auf Spalte 4 überprüfen...
und wenn in Spalte 4 eine 0 steht, soll die komplette Zeile der Matrix gelöscht werden.

Gruß Sebbl
Private Nachricht senden Benutzer-Profile anzeigen
 
DeusRa
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

ich glaube eine Zeile in einer Matrix kann man so löschen:
Code:

A = [1 2 3 4; 5 6 7 8; 9 10 11 12];

zeileloeschen = 2; %z.B. zweite Zeile löschen
A(zeileloeschen,:) = [];
 


Das kannst du dann in eine Schleife einbauen.

Code:

A = [1 2 3 4; 5 6 7 8; 9 10 11 0];
B = A; % Hilfsmatrix
spalte = 4; % Nur die vierte Spalte wird untersucht
j = 1;
count = 0;
for k=1:size(A,1) % Alle Zeilen werden durchsucht
    if A(k, spalte) == 0 % Wenn der SpaltenEintrag in der k-ten Zeile Null ist
       B(j,:) = []; % ... dann lösche die Zeile
       count = count + 1;
       j = k - count ;
    end
end
A = B;
 


Habe gerade kein Matlab vor mir, deswegen kann ich den Code nicht überprüfen....kann sein, dass da irgendwo ein Fehler ist....
Aber für die Idee sollte das genügen.

Gruß
DeusRa
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 11:36     Titel:
  Antworten mit Zitat      
Oha,

ich merke, es ist nicht mein Tag heute.

So neuer Versuch:
Code:

%a=DeineMatrix
a(find(a(:,4)==0),:)=[]
 


Sobald eine 0 in Spalte 4 auftaucht, wird die Zeile mit der Null gelöscht. Ich hoffe, dass es diesmal klappt Wink
 
Sebbl
Themenstarter

Forum-Century

Forum-Century


Beiträge: 131
Anmeldedatum: 09.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2009, 12:22     Titel:
  Antworten mit Zitat      
Vielen Dank für Eure Antworten

Funktioniert super

Gruß Sebbl
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 - 2024 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.