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

Winkel zwischen 2 Vektoren berechnen --> Problem

 

donfelice
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2009, 17:02     Titel: Winkel zwischen 2 Vektoren berechnen --> Problem
  Antworten mit Zitat      
Hi,
bin relativ neu in der Matlab Programmierung da ich es für mein studium benötige!

Mein Problem liegt in der Winkelberechnung zwischen 2 Vektoren. Ich habe über den ginput Befehl 2 * 2 Punkte eingelesen, dann sie über den plotbefehl gezeichnet. Daher erhalte ich 2 Vektoren. Diese berechne ich in Matlab erhalte daher V1 und V2. Danach berechne ich noch die Vektorlängen der beiden Vektoren (lV1 und lV2)

über die Formel zur Winkelberechnung möchte ich nun den Winkel zwischen V1 und V2 berechnen, doch irgendwo hab ich einen Fehler einprogrammiert, denn es kommt kein vernünftiger Wert heraus. Ich habe händisch nachgerechnet, der Fehler muss in der Winkelformel liegen!

Genug geredet, jetzt zeig ich euch mal meinen Code:

Code:
% Bild öffnen
bild = imread('canoe.jpg');
imshow(bild);

hold on

%Abfrage von zwei punkten
a1=ginput(2);
%Zeichnet Strecke zwischen den Punkten
plot(a1(:,1),a1(:,2),'b','LineWidth',1)
%Abfrage von zwei punkten
a2=ginput(2);
%Zeichnet Strecke zwischen den Punkten
plot(a2(:,1),a2(:,2),'r','LineWidth',1)

%Vektor 1
V1 = a1(:,2) - a1(:,1)
%Länge Vektor 1
lV1 = sqrt(V1(1)^2+V1(2)^2)

%Vektor 2
V2 = a2(:,2) - a2(:,1)
%Länge Vektor 2
lV2 = sqrt(V2(1)^2+V2(2)^2)

%Winkel zwischen Vektor 1 und Vektor 2 berechnen
x = (V1(1)*V2(1)+V1(2)*V2(2))/(lV1*lV2)
phirad = acos(x)
phi = 180/pi*phirad


Wäre cool wenn jemand mit mehr Ahnung als ich Smile sich den Code mal durchschauen könnte!
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 04.11.2009, 17:13     Titel:
  Antworten mit Zitat      
Hallo,

Länge eines Vektors: help norm.
Für den Winkel: entweder so, oder aber über complexe Zahlen:
Code:
vdiff = v1-v2;
winkel = angle(complex(vdiff(1), vdiff(2)));
 


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

Forum-Meister


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

kann es daran liegen?

Code:
V1 = a1(:,2) - a1(:,1)

sollte meiner Meinung nach sein:

Code:
V1 = a1(2,:) - a1(1,:)


Ansonsten: für vieles gibt es fertige Befehle:
Länge eines Vektors: norm
Skalarprodukt: dot

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 16:08     Titel:
  Antworten mit Zitat      
So, ich greif mein altes Thema wieder einmal auf!
Das mit der Winkelberechnung hab ich jetzt rausbekommen! Im moment habe ich allerdings das Problem, dass er mir meistens den Komplimentärwinkel ausgibt. Wie kann ich Matlab einklopfen, dass er mir immer den gewünschten Winkel zwischen den Vektoren ausgibt?

Irgendjemand eine Idee oder einen Lösungsvorschlag ?

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
donfelice
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 04.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2010, 16:40     Titel:
  Antworten mit Zitat      
Kann das Sein, dass das mit der Drehrichtung zu tun haben könnte
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.