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

Zeilen mit bestimmten Werten löschen

 

Käsekuchen300
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2018, 13:34     Titel: Zeilen mit bestimmten Werten löschen
  Antworten mit Zitat      
Hallo,
ich habe folgendes Problem:
Ich habe eine Liste mit Koordinatenwerten (x, y und z). Ich möchte gerne alle Werte die am Rand liegen rauswerfen. Also z.B. der größte x-Wert überhaupt ist 700. Das heißt alle Zeilen bei denen x über 690 liegt, sollen raus.
Meine Koordinaten stellen quasi einen ausgefüllten Kreis dar. Daher Problem Nr. 1: Wie kriege ich überhaupt meine Randwerte? Für ein Rechteck ist das ja logisch, aber ein Kreis hat ja auch Randpunkte bei denen x und y nicht maximal sind.
Problem Nr. 2: Wir lösche ich die komplette Zeile? Für einen Quader hatte ich dabei folgende Idee:
Code:
M = dlmread(filename,' ',0,0);
[a1 a2]=size(M);
iter=1;
for i=1:a1
    if M(i,1)<260
        M(i,:)=[];
    i=iter+2;
    elseif M(i,1)>689
        M(i,:)=[];
        iter=i+2;
    else
        i=iter+1;
    end
end

Ich kriege hier aber den Fehler, dass ich bei meiner ersten if-Bedingung die Matrixdimensionen überschreite. Warum weiß ich nicht...
Hätte jemand einen Rat, wie ich mein Problem lösen könnte?
Viele Grüße,
Käsekuchen
Private Nachricht senden Benutzer-Profile anzeigen


J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 03.09.2018, 13:53     Titel:
  Antworten mit Zitat      
Hallo Käsekuchen,

zu Problem 1:
Du kennst deinen Mittelpunkt und deinen Radius? Du kannst folgendermaßen den Abstand deines Punktes (x,y) zum Mittelpunkt (xm,ym) berechnen:
Code:

abstand = sqrt((x-xm)^2+(y-ym)^2)
 

Ist dieser Abstand größer als dein Radius liegt der Punkt außerhalb.

Zu Problem 2:
Du hast ein Array mit dem Namen "Array_name" und willst Zeile "n" löschen:
Code:

Array_name(n,:) = [];
 


Zu deinem Code:
Eine For-Schleife wird so oft durchlaufen wie du ihr am Anfang vorgibst. Änderst du innerhalb der Schleife z.B. über
Code:

den Zähler, interessiert das die For-Schleife nicht. Sie läuft trotzdem so oft durch wie am Anfang vorgegeben. Du verkleinerst deine Matrix also innerhalb der Schleife, diese hat aber die Anzahl an Durchläufen von der anfänglichen, großen Matrix -> irgendwann versuchst du auf Zellen außerhalb deiner Matrix zuzugreifen. Da lohnt es sich auch mal den Workspace anzuschauen. Da kommt man über die Werte des Schleifenindexes, der Fehlermeldung und der Matrix oft auf den Fehler (zumindest solange er so einfach ist).
Also entweder eine While-Schleife verwenden oder die Schleife gleich ganz weg lassen.

Grüße
Jonas
_________________

1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
Private Nachricht senden Benutzer-Profile anzeigen
 
Käsekuchen300
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 24.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2018, 14:47     Titel:
  Antworten mit Zitat      
Vielen Dank!!! Da probiere ich doch gleich mal aus Smile
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.