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

Bereich mit vorgegebener Differenz aus Vektor auslesen

 

Barny
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2013, 14:38     Titel: Bereich mit vorgegebener Differenz aus Vektor auslesen
  Antworten mit Zitat      
Hallo Leute,
ich arbeite erst sehr kurz mit matlab und habe daher kaum Erfahrungen damit.
Folgendes möchte ich umsetzen:
Bei meinem Projekt geht es um Messdaten eines Fahrzeugs bezüglich der Querbeschleunigung. Das Einlesen der Daten stellt kein Problem dar, allerdings möchte ich nur einen Teil der vorhandenen Daten weiterverwenden. Ich möchte aus einem Vektor mit beliebig vielen Messwerten nur jene auslesen die sich über eine gewisse vorgegebene Vektorlänge, z.B. 200 Stellen, nur um eine gewisse Differenz ändern.
Mal ein Beispiel:

ay=[ 3 3.8 2.3 2.4 2.1 2.9 3.3 3.2 2.1 2.2 ]

Aus diesem vektor würde ich jetzt gerne die Werte auslesen die auf einer Länge von 3 (nicht wie bei mir später 200) zusammenhängenden Werten eine maximale Differenz von 0.3 aufweisen. In diesem Fall wären das die 3 Werte 2.3 2.4 2.1.. Diese 3 Werte sollen dann in einem anderen vektor gespeichert werden.
Falls dies in dem langen Vektor mehrfach vorkommt sollen diese Werte ebenfalls gespeichert werden aber nicht die vorher gefundenen überschreiben.

Ich hoffe es ist klar geworden was ich meine und es kann mir einer helfen.
Danke schön schonmal!

Gruß Barny
Private Nachricht senden Benutzer-Profile anzeigen


Barny
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.04.2013, 08:56     Titel:
  Antworten mit Zitat      
Guten morgen,
ich hab mich jetzt längere Zeit mit meinem Problem beschäftigt aber keine wirkliche Lösung gefunden. Ich habe es hinbekommen einen bestimmten Bereich in meinem Vektor zu suchen und auch auszulesen.
Nur habe ich leider keine Idee wie Matlab einen Bereich finden kann, der ähnliche (Angabe der max. Differenz), zusammenhängende Werte enthält ohne vorher einen Bereich zu definieren.

Fällt hier auch keinem was ein? Bin über jede Idee dankbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 19.04.2013, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

ein guter Anfang ist sicher, die Differenzen zweier aufeinanderfolgender Werte in deinem Vektor zu bilden. Das geht mit diff().
Dann wäre es vielleicht gut, wenn du die Stellen raussuchst, an denen die Differenz (vielleicht willst Du in Wirklichkeit aber den Absolutwert der Differenz) kleiner gleich deiner vorgegebenen Maximaldifferenz von 0.3 ist.

Nun musst Du noch etwas überlegen, wie Du die beiden Werte bekommst, bei denen die Differenz kleiner gleich 0.3 ist - und das an zwei aufeinanderfolgenden Stellen.

Ein Ansatz könnte so aussehen:
Code:

ay =[ 3 3.8 2.3 2.4 2.1 2.9 3.3 3.2 2.1 2.2 ];
differenzen_klein = [0, abs(diff(ay)) <= 0.3]; % logischer Vektor
ind = find(differenzen_klein == 1); % Indizes dazu
 


Das ist aber noch nicht die ganze Wahrheit - prüfe, was Du rauskriegst, wenn Du ay(ind) ausgibst. Du willst mindestens 3 zusammenhängende Werte, daher brauchst du im logischen Vektor zwei aufeinanderfolgende einsen, bzw. im ind Vektor zwei aufeinanderfolgende Indizes.

Hilft dir das zunächst?
Private Nachricht senden Benutzer-Profile anzeigen
 
Barny
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 18.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2013, 09:08     Titel:
  Antworten mit Zitat      
Hallo Nras,

vielen Dank für deine Antwort. Ich kam erst eben dazu mich damit zu beschäftigen, da ich nur an meinem Arbeitsplatz einen Zugang zu Matlab habe.
Ich habe deine Idee genutzt und mir anschließend mithilfe eines anderen Forumbeitrages die Anfangs- und Endindizes der Reihen mit zusammenhängenden Einsen ausgelesen.
Damit müsste ich erstmal ein ganzes Stück weiter kommen.

Danke und Gruß
Barny
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.