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

Werte einer Spalte mit Intervall vergleichen Zeilen löschen

 

flo2k14
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 12:19     Titel: Werte einer Spalte mit Intervall vergleichen Zeilen löschen
  Antworten mit Zitat      
Hallo, ich habe ein Problem wo ich nicht weiter komme und zwar folgendes:

Ich habe eine Matrix der Größe (2500,2) Also 2 Spalten mit jeweils 2500 Zeilen.

Nun möchte ich schauen ob die Werte der zweiten Spalte in einem vorher definierten Intervall liegen. falls sie drin liegen soll nichts passieren, liegen sie aber außerhalb dieses Intervalls sollen die Zeilen Beider spalten gelöscht werden.

als Beispiel um es vielleicht etwas Verständlicher zu machen,

Matrix=

12. 85
21. 83
23 17
26 9
30 8

es soll geschaut werden welche Werte der 2 Spalte zwischen 83 und acht liegen also 8<Wert zweite spalte<83

dann sollen die Zeilen außerhalb dieses Intervalls gelöscht werden, sodass ich im Bsp. folgende Matrix erhalten würde.

23 17
26 9

Habt Ihr eine Idee wie ich das ralisieren kann?
Private Nachricht senden Benutzer-Profile anzeigen


SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 12:29     Titel:
  Antworten mit Zitat      
Hi,
ich würde da mit find() arbeiten. Alternativ könntest du auch alle Zeilen mit einer Schleife durchlaufen und jedes Element in der zweiten Spalte prüfen

Code:
gesuchteDaten1=find(Matrix(:,2)<83)
gesuchteDaten2=find(Matrix(:,2)>8)

gesuchteDatenGesamt=cat(1,gesuchteDaten1,gesuchteDaten2)

Matrix=Matrix(gesuchteDatenGesamt,:)


Ich hoffe das hilft dir Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
flo2k14
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 12:47     Titel:
  Antworten mit Zitat      
Code:

gesuchteDaten1=find(Messreihe_1(:,2)<Messbereich95_M1);
 
gesuchteDaten2=find(Messreihe_1(:,2)>Messbereich05_M1);
 
gesuchteDatenGesamt= cat(1,gesuchteDaten1,gesuchteDaten2);
 !--error 10000
cat: falsche Größe für Eingangsargumente: gleiche Größe erwartet.
at line      63 of function cat called by :  
gesuchteDatenGesamt= cat(1,gesuchteDaten1,gesuchteDaten2);

 


Wenn ich das auf meine Daten anwende kommt diese Fehlermeldung. Das bedeutet doch das die Anzahl der Daten unterhalb der oberen grenze nicht genausoviele sind wie oberhalb der unteren grenze. das Bedeutet doch ich müsste die Einschränkungen verknüpfen. Geht das mit einem einfachen und?
Private Nachricht senden Benutzer-Profile anzeigen
 
SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 13:23     Titel:
  Antworten mit Zitat      
ich hätte jetzt erwartet, dass die beiden find()-Befehle jeweils einen Spaltenvektor liefern.

mit cat(1,...) werden diese Spaltenvektoren untereinander geschrieben! Dabei sollte egal sein wie lange diese jeweils sind.

Prüfe doch nochmal ob "gesuchteDaten1" und "gesuchteDaten2" wirklich zwei Spaltenvektoren sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.02.2015, 13:41     Titel:
  Antworten mit Zitat      
Hallo

man braucht kein FIND
so:


Code:


M = [12. 85
21. 83
23 17
26 9
30 8 ]

M(M(:,2) > 8 & M(:,2) < 83,:)


% oder


M = [12. 85
21. 83
23 17
26 9
30 8 ]'

M(:, M(:,2) > 8 & M(:,2) < 83)


 


Zuletzt bearbeitet von denny am 04.02.2015, 13:46, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
flo2k14
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 13:42     Titel:
  Antworten mit Zitat      
Erstmal schonmal vielen Dank für deine echt schnelle Hilfe!


Also Spaltenvektor bedeutet ich hab eine Spalte und ganz viele Zeilen oder?
Wenn dem so ist dann hab ich keinen Spaltenvektor sondern einen Zeilenvektor.

Wenn dem so ist wäre die Entscheidung nachvollziehbar. Wenn ich zwei Zeilenvektoren unterschiedlicher länge untereinander schreibe kann es nicht Funktionieren oder?

Kann ich aus dem Zeilenvektor einen Spaltenvektor machen?

Sorry ich arbeite das erste mal mit Mathlab und bin im Moment noch etwas überfordert Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
SigiSorglos
Forum-Century

Forum-Century


Beiträge: 147
Anmeldedatum: 24.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 13:47     Titel:
  Antworten mit Zitat      
das es ganz ohne find() geht wusste ich nicht Embarassed

aber dann habe ich jetzt auch immerhin etwas gelernt!

die Zeilenvektoren kannst du entweder mit cat(2,gesuchteDaten1,gesuchteDaten2) zusammenfügen ODER du machst mit

Code:
gesuchteDaten1=gesuchteDaten1';


einen Spaltenvektor aus dem Zeilenvektor.

Aber besser ist es, wenn du die Lösung von Denny verwendest Wink Die ist erstens einfacher und zweitens schneller
Private Nachricht senden Benutzer-Profile anzeigen
 
flo2k14
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 04.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2015, 13:50     Titel:
  Antworten mit Zitat      
Hallo denny vielen dank für deinen Beitrag, so funktioniert es. Sieht auf jedenfall sehr gut aus Laughing
versteh ich es bei deinem Bsp richtig das jeweils nur die spalten getauscht sind?

Kann ich das jetz noch in eine Schleife einbinden um Mehrere Messreihen abzufragen??
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.02.2015, 18:15     Titel:
  Antworten mit Zitat      
Zitat:
Hallo denny vielen dank für deinen Beitrag, so funktioniert es. Sieht auf jedenfall sehr gut aus Laughing
versteh ich es bei deinem Bsp richtig das jeweils nur die spalten getauscht sind?

Ja, das ist nur die Dimension vertauscht, dass muss du an deine Daten anpassen. Ob du 2xn oder nx2 Dimension hast, war für mich nicht klar.

Zitat:

Kann ich das jetz noch in eine Schleife einbinden um Mehrere Messreihen abzufragen??


Ja sicher, Code muss du nur dann entsprechend anpassen.
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.