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

if Abfrage aus Matrix

 

michik
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2010, 16:39     Titel: if Abfrage aus Matrix
  Antworten mit Zitat      
Hallo,

habe folgendes Problem:
Ich habe eine Matrix mit ca 2000 Zeilen a 3 Spalten [x y z].
Das sind Positionsvektoren einer Linearbahn.

Jetzt möchte ich, dass Matlab die Matrix abfrägt und, wenn ein bestimmter Abstand vom Zielpunkt erreicht ist, mir diese Koordinaten dann ausgibt, also [x(gesucht) y(gesucht) z(gesucht)]

Hab mal 'ne Skizze angehängt, villeicht versteht man's dann besser.

Habe nur keinen Dunst wie ich das lösen soll...
Vielleicht weiß ja einer von euch weiter...

Danke schon jetzt!

Skizze.pdf
 Beschreibung:
Skizze des Problems

Download
 Dateiname:  Skizze.pdf
 Dateigröße:  1.77 MB
 Heruntergeladen:  452 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

wenn M diese Matrix ist, z der Zeilenvektor der Zielkoordinaten, und tol der Abstand zum Ziel:

Code:
abstand = sqrt(sum(bsxfun(@minus, M, v).^2,2));
ind = find(abstand < tol,1,'first');
M(ind)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 02.08.2010, 16:51     Titel:
  Antworten mit Zitat      
Moin michik,

Wenn Du alles in einer Matrix hast, dann würde ich folgendes machen:
a) Abstände aller Punkte vom gewünschten Punkt berechen
b) auf gewünschte Genauigkeit runden
c) feststellen, ob Abstand erreicht ist:
Code:
distance = repmat(fraglicherPunkt,[size(matrix,1) 1]) - matrix;
distance(:,4) = sqrt(sum(distance.^2,2));
% Runden, sonst gibts wegen Ungenauigkeiten der Berechnung nie Übereinstimmungen
distance(:,4) = round(distance(:,4).*10000)./10000;
matrix(find(distance(:,4) == Abstand,1,'first')


Müsste funktionieren,
habs aber grad nicht getestet,
yankemen

[edit]
okay, es geht offenbar kürzer, ich kenne bsxfun nicht.
[/edit]
_________________

Code:
% Kommentare brauchen ein Leerzeichen nach dem %
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
michik
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2010, 17:26     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:


wenn M diese Matrix ist, z der Zeilenvektor der Zielkoordinaten, und tol der Abstand zum Ziel:

Code:
abstand = sqrt(sum(bsxfun(@minus, M, v).^2,2));
ind = find(abstand < tol,1,'first');
M(ind)




geht das auch, dass er mir nicht nen Absolutwert, sondern nen Vektor (x y z) ausgibt?? Der Betrag bringt mir leider nicht wirklich was...
Code:
tol=0.1;
abstand = sqrt(sum(bsxfun(@minus, Matrix_LIN, pdes).^2,2));
ind = find(abstand < tol,1,'first');
Matrix_LIN(ind)

ans =

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

Forum-Meister


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

Sorry, es sollte heißen:
Code:


Grüße,
Harald

PS.: Was dachtest du, dass da rauskommt? Der Abstand? Negativer Abstand wäre komisch, oder?[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
michik
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 04.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2010, 17:50     Titel:
  Antworten mit Zitat      
Super! funktioniert.
Ja negativer Abstand macht net soviel Sinn Confused
Ist es jetzt auch noch möglich, dass Matlab mir die Zeile der Matrix ausgibt in der der Wert steht?
Also dass er mir sagt:

der Vektor ist [x y z] und steht in der Matrix in der x-ten Zeile

Das würde mir einiges erleichtern...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wie wärs mit ein wenig mitdenken? Die Variable ind ist diese Zeile. Du musst also nur den Strichpunkt weglassen.

Grüße,
Harald
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.