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

Wert suchen, der am nähesten am Vielfachen von X dran ist

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2015, 09:38     Titel: Wert suchen, der am nähesten am Vielfachen von X dran ist
  Antworten mit Zitat      
Hallo Leute,

ich habe folgendes Problem. Habe einen Vektor mit den Abmessungen 595875x1 und möchste jetzt daraus alle Werte extrahieren und in einen neuen Vektor packen, die ein Vielfaches von 0,1 darstellen. Da der Vektor Werte eines Distanzlasers enthält, gibt es aber nicht immer das Vielfache von 0,1, sondern nur Werte, die sich in der Nähe dieses Wertes befinden, z.B. 0,2001; 0,4032 usw.

Also brauche ich einen Befehl, der mir die Werte raussucht, die am nähesten an dem Vielfachen von 0,1 liegen.

Hat da jemand vielleicht eine Idee wie man dieses Problem anpacken könnte? Komme da momentan nicht weiter.

Vielen Dank im Vorraus


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.09.2015, 09:45     Titel:
  Antworten mit Zitat      
mod und sort könnten hilfreich sein.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 09.09.2015, 12:48     Titel:
  Antworten mit Zitat      
Hallo,

problematisch ist, da du nicht genau sagst, welche Werte du wirklich willst.

Zitat:
Also brauche ich einen Befehl, der mir die Werte raussucht, die am nähesten an dem Vielfachen von 0,1 liegen.


Soll ein Wert gefunden werden, der die geringste Abweichung hat? Sollen alle Werte innerhalb einer gewissen Toleranz gefunden werden?

Wobei als erster Schritt der Tipp von Winkow schonmal ein guter Ansatz ist.

Gruß
Chris
_________________

--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 11:21     Titel:
  Antworten mit Zitat      
Danke für die Antworten.

@BlackDread: es sollen die Werte mit der geringsten Abweichung gefunden werden.

@Winkow:
habe die Modulo-Funktion ausprobiert. Jetzt bekomme ich einen neuen Vektor, der mir anzeigt, welche Werte an Welcher Stelle des Spaltenvektors die geringste Abweichung vom Vielfachen von 0,1 aufweisen. Wie kann ich jetzt aber diese Werte aus dem ursprünglichen Vektor extrahieren? Anbei ein Screenshot von der aktuellen Lage. Stehe hier leider gerade auf dem Schlauch.

 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
es sollen die Werte mit der geringsten Abweichung gefunden werden.

Das ist immer noch nicht klar. Soll zu jedem Vielfachen von 0,1 im abgedeckten Intervall der Wert mit der geringsten Abweichung gefunden werden? Wenn nicht, wie wird unterschieden, für welche Vielfache ein solcher Wert gefunden werden soll? Oder sind die Daten so fein gerastert wie angegeben?

Was soll letztlich mit dem Ergebnis gemacht werden? Wenn das mit anderen dazugehörigen Werten in Verbindung gebracht werden soll, bietet sich auch interp1 mit Option 'nearest' an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 12:51     Titel:
  Antworten mit Zitat      
Hallo Harald,

1. Die Werte sind so fein gerastert wie angegeben.
2. Es soll zu jeden Vielfachen von 0,1 der Wert mit der geringesten Abweichung gefunden werden, also zu 0,1; 0,2; 1,6; 8,4 etc.

Dieser Vektor ist ein Weg-Vektor aus einem Laserdistanzsensor, sprich er zeichnet den Weg ab dem Beginn der Messung auf. Dieser Laser war ein einem Fahrzeug montiert. Ich brauche jedoch nur den Wert für alle 10cm, also alle 0,1m.

Zusätzlich zeichnet er noch den Abstand zur Fahrbahnoberfläche auf. Ziel ist es, für jede 10cm den zugehörigen Höhenwert zu finden. Zum Schluss sollten die Vektoren die gleiche Länge aufweisen.

Insgesamt hat die Vorrichtung am Fahrzeug vier Lasersensoren, heisst also ich muss das Procedere noch weitere drei male wiederholen, aber das ist ja dann schnell gemacht sobald der erste Code dann einmal feststeht.

Mit diesen Vektoren soll im Anschluss das Prinzip der Mehrfachabtastung in Matlab eingefügt werden, mit dem sich das Längsprofil einer Straße berechnen und graphisch darstellen lässt.

Hoffe das Ganze ist jetzt ein wenig klarer.

Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.09.2015, 13:45     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ziel ist es, für jede 10cm den zugehörigen Höhenwert zu finden. Zum Schluss sollten die Vektoren die gleiche Länge aufweisen.

Dann würde ich wie gesagt interp1 mit Option 'nearest' verwenden. Die Ermittlung des nächstgelegenen Werts erfolgt dann intern.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2015, 18:53     Titel:
  Antworten mit Zitat      
EDIT: Quark geschrieben :)
Private Nachricht senden Benutzer-Profile anzeigen
 
Pasqua
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2015, 11:02     Titel:
  Antworten mit Zitat      
Hallo zusammen,

habe mich jetzt im Forum angemeldet.

Stand jetzt sieht es so aus:

VektorX=interp1(Sensor_D1neu, AR700_1, ?? ,'nearest');

Sensor_D1 neu ist der Wegvektor, AR700_1 ist der Abstandsvektor mit den Höhenwerten.

Soll jetzt an Stelle der ?? dieses 0.1? Wenn ich das ausprobiere dann spuckt er mir folgende Fehlermeldung aus:

Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.09.2015, 11:18     Titel:
  Antworten mit Zitat      
Hallo Pasqua,

Die Fehlermeldung bedeutet, dass die Werte von "Sensor_D1neu" nicht monoton steigend. Das ist für eine Interpolation aber notwendig.
Wieso das so ist, musst Du herausfinden. Vielleicht hat das Auto gestanden?

Code:
VektorX = interp1(Sensor_D1neu, AR700_1, XX, 'nearest');

Nun musst Du für XX die Werte einsetzen, für die Du Messwerte haben möchtest. Soweit ich verstanden habe ist das:
Code:
XX = 0:0.1:EndTime;

Mit passender Zeit als EndTime.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Pasqua
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2015, 11:54     Titel:
  Antworten mit Zitat      
Hallo Jan S,

danke für deine Antwort. Der Wegvektor Sensor_D1 ist monoton steigend, der Vektor AR700_1 mit den Höhenwerten jedoch nicht, da sich durch die Unebenheiten der Straße die Werte, ganz vereinfacht dargestellt, wie eine Sinuskurve verhalten, d.h. mal wieder größere, dann wieder kleinere Werte.

So wie es aussieht passt dann dieser Ansatz mit der Funktion interp1 leider nicht oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.09.2015, 18:35     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Der Wegvektor Sensor_D1 ist monoton steigend

Sind doppelte Werte in Sensor_D1 enthalten? Wenn ja, dann ist dies das Problem, denn dann ist er nicht streng monoton steigend.

Ansonsten darf ich auf die Fehlermeldung verweisen:
Zitat:
The grid vectors are not strictly monotonic increasing.


Wenn MATLAB dies behauptet, dann bin ich recht zuversichtlich, dass das auch so ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.09.2015, 14:05     Titel:
  Antworten mit Zitat      
Hallo Pasqua,

Bitte poste eine Frage nicht in mehreren Foren. Falls Du einen guten Grund für ein Cross-Posting hast, füge bitte einen Link in das jeweils andere Forum ein. Andernfalls vergeuden die Antwortenden ihre Zeit, wenn sie etwas schreiben, was an anderer Stelle schon geraten wurde. Danke!

Der zweite Input von interp1 darf beliebige Werte annehmen. Nur der erste Input muss strikt monoton sein. Matlab sagt, dass er es nicht ist. Wie kommst Du zu einer gegenteiligen Annahme?

Code:
all(diff(Sensor_D1) > 0)


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Pasqua
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2015, 13:11     Titel:
  Antworten mit Zitat      
Geht klar!

Vielen Dank euch für die Lösungsvorschläge. Ich werde den Sensor_D1 nochmals überprüfen und euch dann Bescheid geben, sobald ich etwas gefunden habe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Pasqua
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2015, 14:27     Titel:
  Antworten mit Zitat      
Hallo Leute,

der Wegvektor war nicht streng monoton steigend. Das Problem wurde aber behoben und es funktioniert einwandfrei. Vielen Dank nochmals.
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.