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

Beliebige Anzahl Punkte auf einem Kreis

 

Lars_1991
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 10:56     Titel: Beliebige Anzahl Punkte auf einem Kreis
  Antworten mit Zitat      
Hallo liebe Mitglieder,

ich schreibe aktuell an einem Code, der einen Kalman Filter darstellen soll.

Ich möchte mir nun eine Kreisfahrt simulieren, den das Fahrzeug in der Simulation "nachfährt"

Radius R = 25m
Punkte auf Kreis 360°
Das Fahrzeug soll am Punkt (25/0) starten.
Ausgegeben werden soll der Winkel zum Mittelpunkt und die x und y Koordinate.

Hat jemand dafür eine Idee?
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: 04.11.2019, 13:03     Titel:
  Antworten mit Zitat      
Hallo,

die Bahn soll dann wohl sortiert sein? Ist ein Endpunkt vorgegeben oder soll der zufällig sein? Wie sieht es mit der Anzahl der Umdrehungen aus?

Erstes Beispiel:
Code:
phi = linspace(0, 2*pi);
R = 25;
x = R*cos(phi);
y = R*sin(phi);


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 14:18     Titel:
  Antworten mit Zitat      
Hallo Harald,

erstmal vielen Dank für deine schnelle Antwort.

Der Endpunkt soll genau der Anfangspunkt sein. Es ist vorgesehen, dass der Kreis für eine bestimmte Anzahl von Runden durchfahren wird, damit man schauen kann wie die Fahrt evtl driftet oder ich möchte später eine bestimmte Zeit (2-3min) vorgeben, die das Fahrzeug im Kreis fährt....

Kann ich mir denn zu deinem Code eine Tabelle/Matrix erzeugen, die mir dann alle 360 Punkte abspeichert (Winkel, X Koordinate, Y Koordinate)

Vielen Dank, ich werde deine Idee sofort mal ausprobieren

Liebe Grüße
Lars
Private Nachricht senden Benutzer-Profile anzeigen
 
Lars_1991
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 14:23     Titel:
  Antworten mit Zitat      
So soll es aussehen wie in der angehängten Datei. Habe das mit einem Tool im Netz gemacht und diese Werte dann in Excel kopiert und dann eingelesen die Tabelle. Doch leider ist es dann ein "Cell Array" welches ich dann nicht mit einem Array addieren kann.

Liebe Grüße
Lars
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: 04.11.2019, 15:29     Titel:
  Antworten mit Zitat      
Hallo,

es ist kein Anhang da.

Du brauchst nur phi so zu definieren:
Code:
phi = linspace(0, 2*pi*N, 360); % N: Anzahl der Runden


Die Matrix:
Code:
[phi', x', y']


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 15:40     Titel: Fast geschafft ;-)
  Antworten mit Zitat      
Hallo Harald,

den Code habe ich jetzt so angepasst, dass er alles beinhaltet, was ich gern möchte. Jetzt wäre eine Nummerierung noch schön. Von 1 bis N (360)

Ich habe mir die Werte des Lenkwinkels phi mal angesehen und festgestellt, dass diese nur bis 6,2... gehen. Müsste da nicht ein Wert 0 bis 360 Grad herauskommen?

Code:

% Kreisfahrt berechnen
r = 1                              % r = Anzahl Runden
phi_l = linspace(0, 2*pi*r,360)
R = 25;
x_e = R*cos(phi_l)
y_e = R*sin(phi_l)

M_e = [phi_l',x_e',y_e']


Danke für die schnelle Hilfe.

Liebe Grüße
Lars
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: 04.11.2019, 15:46     Titel:
  Antworten mit Zitat      
Hallo,

in MATLAB werden Winkel bevorzugt im Bogenmaß betrachtet. Du kannst die Winkel entweder am Ende in Grad umrechnen (*180/pi) oder direkt mit Grad arbeiten und dann sind und cosd verwenden.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 15:58     Titel:
  Antworten mit Zitat      
Hallo Harald,

wo meinst du am Ende umrechnen?

Code:

% Kreisfahrt berechnen
r = 1                              % r = Anzahl Runden
phi_l *180/pi = linspace(0, 2*pi*r,360)            % so???
R = 25;
x_e = R*cosd(phi_l)  % cosd???
y_e = R*sind(phi_l)   % sind???

M_e = [phi_l',x_e',y_e']


Habe den Code angepasst...meinst du es so?

Mit freundlichen Grüßen
Lars
Private Nachricht senden Benutzer-Profile anzeigen
 
Lars_1991
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 16:25     Titel:
  Antworten mit Zitat      
Ich hab jetzt nochmal einen Versuch gestartet, das Bogenmaß in das Gradmaß umzuwandeln.

Code:

% Matrix exakte Werte
M_e = [phi_l',x_e',y_e']

% Umwandlung in Tabelle
T_e = array2table(M_e,'VariableNames',{'phi','X','Y'})

T_e_phi = T_e(:,"phi")
T_e_phi_Grad = T_e_phi *180/pi
 


Doch es kommt die Fehlermeldung:
Undefined operator '*' for input arguments of type 'table'.

Warum kann ich die Werte einer Tabelle nicht mit einem Wert multiplizieren?
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: 04.11.2019, 16:38     Titel:
  Antworten mit Zitat      
Hallo,

um mit Tables zu rechnen, muss man die Daten extrahieren. Mit {} oder .
Code:
T_e_phi = T_e{:,"phi"} % oder
T_e_phi = T_e.phi


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 04.11.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2019, 16:41     Titel:
  Antworten mit Zitat      
Danke, das hab ich jetzt auch so gemacht!

Hat funktioniert.

Werde auf dem Weg bestimmt noch weitere Fragen zum Thema Matlab haben. Dieses Thema ist auf jeden Fall erstmal gelöst. Danke 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 - 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.