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

Zahlenbereich aus Matrix löschen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2013, 00:10     Titel: Zahlenbereich aus Matrix löschen
  Antworten mit Zitat      
Hallo,

da ich leider ein ziemlicher Neuling in Sachen MATLAB bin stehe ich vor einem Problem. Ich möchte aus einer Matrix alle Zahlen der dritten Spalte die zwischen <=20 und >=10 liegen auf 0 setzten und dann diese Zeilen löschen. Leider habe ich keine Ahnung wie ich das machen soll, hoffe ihr könnt mir helfen.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.12.2013, 00:44     Titel:
  Antworten mit Zitat      
Hallo,

warum erst auf 0 setzen, wenn du sie dann ohnehin löscht?

Code:
M( M(:,3) >= 10 & M(:,3) <= 20, :) = [];


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2013, 00:49     Titel:
  Antworten mit Zitat      
Hatte das zuerst mit auf null setzten probiert. Habe gedacht das wäre einfacher. Aber dein Vorschlag klappt bestens. Vielen dank
 
MEnde
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.01.14
Wohnort: Wiesbaden
Version: 2011b Mac
     Beitrag Verfasst am: 21.01.2014, 16:19     Titel:
  Antworten mit Zitat      
Hallo,

ich bin auch extrem frisch hier und frage mich gerade, was genau in dem zuvor vorgestellten Code zum Löschen der Zeile führt.
Vgl.
Code:
M( M(:,3) >= 10 & M(:,3) <= 20, :) = [];

Die leeren eckigen Klammern?

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 21.01.2014, 16:46     Titel:
  Antworten mit Zitat      
Letztendlich kann man keine Zeilen löschen.

Es gibt denn Ansatz eine neue Matrix zu erstellen die eine Zeile weniger hat und die hat dann halt den selbern Namen...

Oder man schiebt so eine Zeile nach hinten und setzt den Inhalt auf einen sinnvollen Wert wie 0, [], nan.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
MEnde
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.01.14
Wohnort: Wiesbaden
Version: 2011b Mac
     Beitrag Verfasst am: 21.01.2014, 23:23     Titel:
  Antworten mit Zitat      
uHallo Andreas,

vielen Dank für deine schnelle Antwort.
Aber wie wäre das Vorgehen, wenn man Messdaten mit mehr als 5 Spalten und über 1000 Zeilen formartieren möchte?
Wenn es also das Ziel ist Zeilen, die keine vernünftigen Messwerte besitzen, aus der Matrix zu filtern? Am besten sobald ein Einzelner Messwert fehlerhaft ist? Würde man eine neue Matrix erstellen, wenn man keine Zeilen löschen kann?
Falls du ein Buchtipp oder einen Link hast, dafür bin ich immer dankbar.

Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.01.2014, 00:58     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aber wie wäre das Vorgehen, wenn man Messdaten mit mehr als 5 Spalten und über 1000 Zeilen formartieren möchte?

Was bedeutet "formatieren"? Falls es um das Entfernen von bestimmten Zeilen geht: die Technik dazu ist unabhängig von der Zeilen- oder Spaltenanzahl.

Statt mit Büchern oder irgendwelchen Links würde ich es als erstes immer mit der Dokumentation versuchen. Hier ein Beispiel, wenn die "nicht vernünftigen" Messwerte NaN sind:
http://www.mathworks.de/de/help/mat.....nalysis/missing-data.html

Für deinen Fall insbesondere interessant:
Code:
X(any(isnan(X),2),:) = [];
oder etwas ausführlicher:
Code:
fehlerhafteZeile = any(isnan(X),2);
X(fehlerhafteZeile ,:) = [];


Die hierbei verwendete Technik ist die logische Indizierung:
http://www.mathworks.de/de/help/mat.....x-indexing.html#bq7egb6-1

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
MEnde
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.01.14
Wohnort: Wiesbaden
Version: 2011b Mac
     Beitrag Verfasst am: 23.01.2014, 14:05     Titel:
  Antworten mit Zitat      
Vielen Dank,

für den sehr guten Einstieg.

Beste Grüße!
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.