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

Bestimmen einer Vektorposition

 

roadrunner
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2011, 21:24     Titel: Bestimmen einer Vektorposition
  Antworten mit Zitat      
Hallo, ich stolpere wohl gerade über einen Anfängerfehler:

Code:
%
index = (b.Car_v.data(1,:) == 62.8993); % suche Position in Vektor mit Wert "62.8993"
index(:,1)
 


Das Ergebnis ist ans = 0, was falsch ist.

Mit einem einfachem Besipiel funktioniert es aber.

Die Daten sind ein Vektor der size (1 33488)
Ich stehe momentan auf dem Schlauch, kann mir jemand weiterhelfen.

Vielen Dank, gruß

Daten.zip
 Beschreibung:

Download
 Dateiname:  Daten.zip
 Dateigröße:  5.54 MB
 Heruntergeladen:  572 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

was wäre denn so ein einfaches Beispiel, wo's "funktioniert"?

index ist in deinem Fall ein logischer Vektor aus 0 und 1; 1 steht für Erfüllung der Bedingung, 0 für Verletzung der Bedingung.
Du schaust dir die erste Zeile deiner Daten an, folglich ist index ein Zeilenvektor.
Aus diesem holst du dann die erste Spalte, mit anderen Worten also das erste Element. Wenn das erste Element deiner Daten also nicht zufällig 62.8993 ist, dann ist das Ergebnis vollkommen richtig.

Ich gehe vielmehr davon aus, dass das Ergebnis nicht dem entspricht, was du wolltest. Da du aber nicht sagst, was du erreichen willst, kann ich dir zunächst nur erklären, was dein Code macht.

Bleibt anzufügen, dass ich grundsätzlich von Tests auf Gleichheit abrate, sofern es sich in irgendeiner Form um errechnete oder mit minimalen Ungenauigkeiten behaftete Daten handelt. Besser als a == b ist
Code:

mit einer nahezu beliebigen Toleranz, z.B. 1e-10.

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
 
roadrunner
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2011, 23:08     Titel:
  Antworten mit Zitat      
Hallo,
vielen Dank schon einmal für den Hinweis.

Ich habe vor, die Position eines bestimmten Werts im Vektor zu bestimmen, um darüber auf den Wert an gleicher Position in einer zweiten Datenreihe zu schliessen.
Hier ein einfaches Bsp zur Erklärung:
Code:

a = [3,6,9,12];
b= [7,14,21,28];
index = (a(1,:) == 9);
b (:,index);
 


Ergebnis = 21.

hier funktionierts;-).
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

in deiner anderen Anwendung verwendest du dann index falsch. Und da ich nicht weiß, was in deinem Fall die zweite Datenreihe ist, auf die du dich beziehen willst, ist es auch da schwierig, dir weiterzuhelfen. Vielleicht das?
Code:
b.Car_v.data(2,index)


Wenn nicht, versuch mal folgendes:
Code:
a = (erste Datenreihe)
b = (zweite Datenreihe)
index = (a(1,:) == 62.8993);
b (:,index);

Allerdings ist dein Code so nur für Zeilenvektoren geeignet.

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
 
roadrunner
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2011, 23:31     Titel:
  Antworten mit Zitat      
Hallo Harald,
die zweite Datenreihe soll "b.Time.data" sein, auch ein Zeilenvektor, mit der gleichen Anzahl von Werten.
Die Aufgabe ist, herauszufinden zu welcher Zeit t (b.Time.data) die Geschwindigkeit (b.Car_v.data) gleich 50km/h ist.
Das ist mein bisheriger Versuch:

Code:

index = ((b.Car_v.data (1,:)) == 50); % Vektorpositio, wo v=50km/h ist.
Time50 = b.Time.data(:,index) % Zeit wo v=50km/h
 


ich frage mich jetzt allerdings wie ich das "abs(a-b) < Tol" einbauen könnte, denn die genaue Zuordnung über "== 50" funktioniert sicherlich nicht, wie du schon geschrieben hattest.

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

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.02.2011, 23:54     Titel:
  Antworten mit Zitat      
Hallo,

jetzt kommen wir der Sache näher. Vorschlag:

Code:
tol = 0.01; %oder je nach Wunsch größer oder kleiner
index = (abs(b.Car_v.data (1,:)-50) < tol); % Vektorpositio, wo v=50km/h ist.
Time50 = b.Time.data(:,index)


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
 
roadrunner
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2011, 09:19     Titel:
  Antworten mit Zitat      
das ist es.

Harald, besten Dank!

gruß Torsten
Private Nachricht senden Benutzer-Profile anzeigen
 
roadrunner
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 01.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2011, 09:19     Titel:
  Antworten mit Zitat      
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.