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

Error bei Löschvorgang

 

Senraphil
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 16.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 14:40     Titel: Error bei Löschvorgang
  Antworten mit Zitat      
Hallo zusammen,

ich steh grad völlig aufm Schlauch.

Ich möchte meinen Datensatz von allen Nullzeilen befreien:
Dazu habe ich den Befehl
Code:
data(data(:,6)==0,:)=[];

verwendet.
Nun wollte ich eigentlich statt der "6" ein "2:6" eintragen. Darauf kam der Fehler.
Eigentlich möchte ich nur die Nullzeilen löschen, in denen in den jeweiligen Spaltenzellen der Zeile eine Null steht. Das soll durch "2:6" überprüft werden.
Kann mir jemand den korrekten Weg zeigen? Ich raffs grad net.

Danke
Senraphil
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 23.07.2014, 17:28     Titel:
  Antworten mit Zitat      
Hallo,

zum Fehler: Bitte Fehlermeldungen angeben. Du kannst ja mal schauen, was rauskommt, wenn du
Code:
data(:,2:6)==0
eingibst. Da kommt nämlich eine Nx5 Matrix raus. Das passt dann nicht mit dem Befehl drum rum zusammen.

Ich glaube, dass ich nicht ganz verstehe, was du machen möchtest.
Willst du die Zeile löschen, wenn in einer Zeile in ALLEN Spalten 2 bis 6 eine Null steht oder wenn nur in mindestens EINER Spalte eine Null steht?

Vermutlich so?
Code:
data(any(data(:,2:6)==0,2),:)=[];

Aber das kann kein Mensch gut lesen. Daher empfielt es sich, so eine logische Indizierung mit vernünftigen Variablennamen zu erledigen. Beispielsweise so:
Code:
data = rand(3,6);
data(2,:) = [2,3,0,6,0,5]; % eine Zeile mit ein paar Nullen
row_contains_zeros = any(data(:,2:6)==0,2);
data(row_contains_zeros,:)=[]; % löscht Zeile 2, weil irgendwo in Zeile 2, Spalten 2-6 mindestens eine Null vorkommt

data = rand(3,6);
data(2,:) = [2,3,0,6,0,5]; % eine Zeile mit ein paar Nullen
data(3,:) = zeros(1,6); % eine Zeile mit nur Nullen
row_contains_only_zeros = all(data(:,2:6)==0,2);
data(row_contains_only_zeros,:)=[]; % löscht Zeile 3, weil in Zeile 2 in allen Spalten 2-6 Nullen stehen

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 17:32     Titel:
  Antworten mit Zitat      
Wie lautet denn die Fehlermeldung?

Code:

data(data(:,2:6)==0,:)=[];
 

sollte doch funktionieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
Senraphil
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 16.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2014, 08:43     Titel:
  Antworten mit Zitat      
Das war die Fehlermeldung:
??? Index of element to remove exceeds matrix dimensions.

Der Vorschlag von Nras hat nun funktioniert. Danke.
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.