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

Mit einer Forschleifen Daten filtern

 

IT_geek_ozi
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 25.10.19
Wohnort: ---
Version: 2018a
     Beitrag Verfasst am: 31.10.2019, 16:15     Titel: Mit einer Forschleifen Daten filtern
  Antworten mit Zitat      
Hallo zusammen,

ich habe einen eindimensionalen Vektor, mit 18000 Werten.
In dem Vektor gibt es Werte, die identisch sind. Ich möchte mit einer for schleife, die behalten die erstens größer gleich 1 sind und die nicht nur einmal vorkommen. Also alles was mehr als einmal vorkommt soll in einem anderen Voctor gespeichert werden.

Kontext: Ich versuche einen konstanten Radius rauszufinden, und in dem Vektor sind ganz viele Radien drin ich möchte nur die behalten die öfter vorkommen an den jeweiligen Messpunkten (x,y)

Ich möchte die konstanten Radien praktisch rausfiltern und abspeichern.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

sind die Daten sortiert?
Ist die Reihenfolge in den Ergebnissen wichtig?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
IT_geek_ozi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 25.10.19
Wohnort: ---
Version: 2018a
     Beitrag Verfasst am: 02.11.2019, 13:55     Titel:
  Antworten mit Zitat      
Nein die Daten sind nicht sortiert. Ich habe eine Strecke mit Geraden und Kurven. Ich habe von dieser Strecke den Kurvenradius berechnet und möchte jetzt die konstanten Kurvenradien filtern und natürlich auch alle > 0 damit es überhaupt eine Kurve ist.

zb.

So sieht meine Tabelle mit den Radien zb aus:

0
0
2
3
4
10
10
10
10
10
7
5
4
3
1
0

In dem Fall würde ich die 10m rausfiltern.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

nochmal:
Zitat:
Ist die Reihenfolge in den Ergebnissen wichtig?


Zudem: geht es nur um doppelte nacheinander vorkommende Werte oder möchtest du z.B. hier auch die 3 und die 4 als doppelt zählen?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
IT_geek_ozi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 25.10.19
Wohnort: ---
Version: 2018a
     Beitrag Verfasst am: 03.11.2019, 13:44     Titel:
  Antworten mit Zitat      
Hi Harald,

Also nur die, die nacheinander öfter vorkommen.

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

Forum-Meister


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

das ist dann relativ einfach. Für einen Spaltenvektor:
Code:
v = [NaN; v; NaN]; % künstliche "Nachbarn"
isDup = v(2:end-1) == v(1:end-2) | v(2:end-1) == v(3:end); % = Vorgänger oder Nachfolger
doppelt = v(isDup);
nichtDoppelt = v(~isDup);


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
IT_geek_ozi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 25.10.19
Wohnort: ---
Version: 2018a
     Beitrag Verfasst am: 03.11.2019, 15:05     Titel:
  Antworten mit Zitat      
Hi Harald,

danke erst einmal!! Dein Code funktioniert sehr gut. Ich habe jedoch die Zeile mit isDup nicht ganz verstanden. Könntest du evtl. noch eine Zeile dazu schreiben was es da genau macht.

Ich möchte jetzt vor allem auch alle Werte die größer als 1 sind. Wo genau würde es sinn machen so eine IF Anweisung einzubauen?

Ich wäre dir sehr dankbar, wenn du mir nochmal kurz helfen könntest.


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

Forum-Meister


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

if ist dafür nicht nötig.
Code:
isDup = (v(2:end-1) == v(1:end-2) | v(2:end-1) == v(3:end)) & (v(2:end) > 1)


Jedes Element wird mit seinem Vorgänger bzw. Nachfolger vergleichen, z.B.
v(2) ist doppelt, wenn v(2) == v(1) oder v(2) == v(3). Das dann eben für alle Elemente.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
IT_geek_ozi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 25.10.19
Wohnort: ---
Version: 2018a
     Beitrag Verfasst am: 03.11.2019, 15:58     Titel:
  Antworten mit Zitat      
Hi Harald,
danke für deine Antwort!

Zuletzt bearbeitet von IT_geek_ozi am 03.11.2019, 17:28, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

weil ich mich bei der 2. Bedingungetwas vertan habe:
... & (v(2:end-1) > 1)

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.