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

Löschen vom bestimmten Zeilen aus Matrix

 

Soeren

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2011, 17:50     Titel: Löschen vom bestimmten Zeilen aus Matrix
  Antworten mit Zitat      
Hallo

Ich habe folgendes Problem:

Ich habe eine Matrix "All" mit i Zeilen. Jede Zeile besteht aus X Y Z und 144 ganzzahligen Werten. Nun möchte ich alle Zeilen löschen, die 144mal die -1 oder 144mal die -9 enthalten. Allerdings klappt das nicht so ganz :( In der Matrix Messwerte stehen nur die jeweiligen 144 Messwerte in jeder Zeile.

Mein bisheriger Code lautet:
Code:

i=1;
j=1;
while i<=size(All,1)
   for t=1:1:144
      if (Messwerte(i,t)~=(-1)) && (Messwerte(i,t)~=(-9))
          All_ohne_1_9(j,:)=All(i,:);
          j=j+1;
      end
   end
   i=i+1;
end
 

hat jemand einen heißen Tipp für mich? Vielen Dank!

Edit by _Peter_:Bitte Codeumgebung verwenden.Danke.


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.06.2011, 22:10     Titel: Re: Löschen vom bestimmten Zeilen aus Matrix
  Antworten mit Zitat      
Hallo Soeren,

Zitat:
Ich habe eine Matrix "All" mit i Zeilen. Jede Zeile besteht aus X Y Z und 144 ganzzahligen Werten.

Das verstehe ich nicht. Was sind "X Y Z"? Welche Dimension hat die Matrix?

Eine Methode um die Zeilen zu finden, die nur aus -1 oder nur -9 enthalten:
Code:

A = round(rand(100, 144) * (-10));
Index_either1or9 = or(all(A == -1, 2), all(A == -9, 2));

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2011, 00:39     Titel:
  Antworten mit Zitat      
Die Matrix sieht so aus:

1 32 120 -1 -1 -1 -1 -1 -1 -1 -1 -1....(insgesamt 144 mal eine -1)
2 34 125 -9 -9 -9 -9 -9 -9 -9 -9 -9....(insgesamt 144 mal eine -9)
3 33 123 -9 -9 -9 4 -9 -9 -9 -9 -9....(insgesamt 144 Werte)
usw

Hierbei sollte also in einer neuen Matrix nur die dritte Zeile mit allen ihren Spalten gespeichert werden. Die ersten beiden Zeilen fliegen raus.

Danke für den Code..hatte dazu zwar eine Idee, konnte es aber dann doch nciht anwenden.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.06.2011, 02:37     Titel:
  Antworten mit Zitat      
Hallo Soeren,

Code:
A = [1, 32, 120, repmat(-1, 1, 144); ...
      2, 32, 120, repmat(-9, 1, 144); ...
      3, 32, 120, 4, repmat(-1, 1, 143)];
Aindex = A(:, 4:end);
Index_either1or9 = or(all(Aindex == -1, 2), all(Aindex == -9, 2));
 

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2011, 23:46     Titel:
  Antworten mit Zitat      
Vielen Dank!
Habe dann noch eine Schleife mit einer if-Abfrage geschrieben, die mir die Matrix mit den interessanten Zeilen zusammensetzt. Allerdings ist das ganze wohl ziemlich rechenintensiv. Das Abklappern der ca. 200000 Zeilen hat gute 3 Stunden gedauert...dafür hat sich die Zeilenanzahl allerdings halbiert!

Nochmals Danke für die schnelle Hilfe!
 
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.