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

Bestimmte Zeilen löschen, wenn Bedingung eintrifft

 

iMC117
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 10.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 14:01     Titel: Bestimmte Zeilen löschen, wenn Bedingung eintrifft
  Antworten mit Zitat      
Hallo,

ich hab eine Excel-Matrix in Matlab eingelesen und die erste Spalte fängt mit Null an und wird immer größer, geht also von Null bis 2000. Es handelt sich um Messwerte, dazwischen kommen also manchmal Werte vor, die unerwünscht sind und die ich gerne löschen würde. Zwischendurch kommt es also vor, dass in der ersten Spalte eine sehr große Zahl auftaucht, die mit den eigentlichen Messwerten nichts zu tun hat.

Die erste Spalte kann man sich in etwa so vorstellen:

Code:
M=[0,1,2,3,4,999999,5,6,999999,7,8,999999,9,10,11,12,13,14,999999];


Die Zahlen sind jetzt fiktiv. Immer wenn die große Zahl 999999 auftaucht, soll diese Zeile gelöscht werden. Ich hab mir die Lösung so vorgestellt:

Code:
for i=1:length(Spalte1)
   
    if Spalte1(i)> 1000;
    Spalte(i,:)=[];

    end
end


Leider kommt dann diese Fehlermeldung: "Index exceeds matrix dimensions."
Meine Excel-Datei hat mehr als 32.000 Zeilen.

Kann mir da jemand bitte helfen? Ist wahrscheinlich was sehr einfaches, aber ich komme leider nicht auf die Lösung.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.09.2015, 14:49     Titel:
  Antworten mit Zitat      
Hallo,

geht ohne for-Schleife ganz bequem:

Code:
M(M(:,1) == 999999, :) = [];


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
iMC117
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 10.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 15:13     Titel:
  Antworten mit Zitat      
Danke, aber die Anzahl der Zeilen bleibt irgendwie gleich. Müsste die Anzahl der Zeilen nicht sinken, wenn die ganzen Zeilen mit 999999 gelöscht werden? Wenn 999999 auftaucht, dann soll die gesamte Zeile in der Matrix gelöscht werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.09.2015, 15:16     Titel:
  Antworten mit Zitat      
Hallo,

Beispiel:
Code:
M = [1, 5; 999999, 10; 3, 15]  % 3 Zeilen
M(M(:,1) == 999999, :) = [];  % 2 Zeilen


Wenn es bei dir nicht funktioniert, dann bitte ein konkretes Beispiel angeben, in dem das Problem auftritt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 21.09.2015, 15:16     Titel:
  Antworten mit Zitat      
sicher das die zahl 999999 auftaucht und nicht 999999.000001 oder sowas? ansonsten mal ein beispiel zur verfügung stellen das das verhalten reproduziert.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
iMC117
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 10.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 15:39     Titel:
  Antworten mit Zitat      
Sorry, mein Fehler. Es funktioniert auf jeden Fall. Die Anzahl der Zeilen ist so riesig und es hat sich ein perfekter Zahlendreher eingeschlichen, weshalb die Anzahl der Zeilen auf den ersten Blick für mich gleich aussah.
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.