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

Hilfe für einfaches programm....

 

Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2011, 14:04     Titel: Hilfe für einfaches programm....
  Antworten mit Zitat      
Also ich brauche etwas Hilfe mit Matlab, da es bei mir schon einige Semester her ist dass ich damit gearbeitet habe.

Ich habe ein Programm, bei dem am ende die 4 Winkel theta ausgegeben werden sollen. dabei sind alle variablen bekannt, außer x und y , die sollen dann von mir eingegeben werden.
ich habe jetzt mal alles in matlab aufgeschrieben aber natürlich geht es nicht, da wie ich vermute nicht nur eine sache falsch ist.

Code:

function r = robot(x,y)

l1 = 335;
l2 = 365;
l3 = sqrt(171769);
l4 = 405;
l5 = 104;
a = 75;
b = 231;
c = 88;

s1 = sqrt(x^2 + y^2) - a;
s2 = sqrt(b^2 + s1^2);

theta1 = atan2 (y,x);

theta2 = acos ((b^2 + s2^2 - s1^2)/(2*b*s2)) + acos ((l2^2+s2^2-l3^2)/(2*l2*s2));

theta3 = 180 - acos ((l2^2+l3^2-s2^2)/(2*l2*l3)) - acos ((c^2+l3^2-l4^2)/(2*c*l3));

theta4 = 90 - ((s1^2+s2^2-b^2)/(2*s1*s2)) - acos ((s2^2+l3^2-l2^2)/(2*s2*l3)) - acos ((l3^2+l4^2-c^2)/(2*l3*l4));
 
end
 


was muss ich denn alles ändern bzw korriegieren damit es so läuft wie ich mir das vorstelle?
bitte nich steinigen, ich bin wirklich neuling auf dem gebiet.

Danke schonmal!


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 06.10.2011, 14:48     Titel:
  Antworten mit Zitat      
Und was genau funktioniert nicht?

Wenn der Rückgabewert im Funktionskopf r heißt, muss die Variable auch innerhalb der Funktion vorhanden sein.

Code:

% z.B.
r = [theta1;theta2;...]

% besser wäre aber...
r(1) = atan2 (y,x);
r(2) = acos(...)
r(3) = ...
r(4) = ...
 
Private Nachricht senden Benutzer-Profile anzeigen
 
coopers
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 27.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2011, 14:56     Titel:
  Antworten mit Zitat      
Du kannst das ganze doch auch einfach als Skript ausführen.

Entferne einfach die erste und letzte Zeile deines Codes.

Wenn x,y schon in einer Datei vorliegen, kannst du sie noch mit 'load' am Anfang des Skripts in den Workspace laden.

Viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2011, 16:10     Titel:
  Antworten mit Zitat      
puh ich buin ein wenig überfordert!
ich möchte im endefekt für x und y werte eingeben und will dann dann dass mir matlab die 4 theta werte ausspuckt? was muss ich denn jetzt genau ändern?

grüße
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 06.10.2011, 16:16     Titel:
  Antworten mit Zitat      
An der Funtkion erstmal nicht viel...nur der Output.

Code:

function r = robot(x,y)

 l1 = 335;
 l2 = 365;
 l3 = sqrt(171769);
 l4 = 405;
 l5 = 104;
 a = 75;
 b = 231;
 c = 88;

 s1 = sqrt(x^2 + y^2) - a;
 s2 = sqrt(b^2 + s1^2);

 r(1) = atan2 (y,x);

 r(2) = acos ((b^2 + s2^2 - s1^2)/(2*b*s2)) + acos ((l2^2+s2^2-l3^2)/(2*l2*s2));

 r(3) = 180 - acos ((l2^2+l3^2-s2^2)/(2*l2*l3)) - acos ((c^2+l3^2-l4^2)/(2*c*l3));

 r(4) = 90 - ((s1^2+s2^2-b^2)/(2*s1*s2)) - acos ((s2^2+l3^2-l2^2)/(2*s2*l3)) - acos ((l3^2+l4^2-c^2)/(2*l3*l4));
 


Jetzt rufst du die Funktion im Command Window oder einem anderen m-file so auf:

Code:

x = ...
y = ...
r = robot(x,y)
Private Nachricht senden Benutzer-Profile anzeigen
 
Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2011, 16:45     Titel:
  Antworten mit Zitat      
ok es funktioniert schonmal nur irgendwie sind die werte nicht ganz richtig komischerweise, ich muss das nochmal prüfen!

aber vielen dank schonmal!!

grüße
 
Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 15:19     Titel:
  Antworten mit Zitat      
so das programm spuckt mittlerweile die richtigen ergebnisse aus, wie ich sie brauche.

eine frage hätte ich da aber noch:

das ergebniss wird jetzt wie folgt angezeigt:

theta =

45.0000 -80.2317 67.0532 -89.4116

ich hätte gerne das da steht theta1=..., theta2=... usw usw

wie ist das machbar?

und noch eine frage: ist es möglich die werte in eine excel datei/*.txt-datei abspeichern zu lassen? da ich mit catia auf diese werte zugreifen muss...

hier nochmal das endprogramm:

function theta = robot(x,y)

l1 = 335;
l2 = 365;
l3 = sqrt(171769);
l4 = 405;
l5 = 104;
a = 75;
b = 231;
c = 88;
s1 = sqrt(x^2 + y^2) - a;
s2 = sqrt(b^2 + s1^2);

theta(1) = ( atan2 (y,x) )/ pi * 180;
theta(2) = acosd ((b^2 + s2^2 - s1^2)/(2*b*s2)) + acosd ((l2^2+s2^2-l3^2)/(2*l2*s2))-180;
theta(3) = 180 - acosd ((l2^2+l3^2-s2^2)/(2*l2*l3)) - acosd ((c^2+l3^2-l4^2)/(2*c*l3));
theta(4) = 90 - acosd ((s1^2+s2^2-b^2)/(2*s1*s2)) - acosd ((s2^2+l3^2-l2^2)/(2*s2*l3)) - acosd ((l3^2+l4^2-c^2)/(2*l3*l4));

end


danke schonmal
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 17:49     Titel:
  Antworten mit Zitat      
z.B:
Code:
disp(sprintf('Theta %i. = %.4f\n', [1:length(theta); theta]))


mfg,
soad
Private Nachricht senden Benutzer-Profile anzeigen
 
Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 00:34     Titel:
  Antworten mit Zitat      
Pack ich den code einfach ans
Ende vom programm??

Jemand ne idee zwevks überführung in excel?
Oder wäre ea noch einfacher das ganze programm in excel zu schreiben?

Gruß
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 13:37     Titel:
  Antworten mit Zitat      
Heisenberg hat Folgendes geschrieben:
Pack ich den code einfach ans
Ende vom programm??

Dort, wo du die Ausgabe haben möchtest Wink.
Heisenberg hat Folgendes geschrieben:

Jemand ne idee zwevks überführung in excel?
Oder wäre ea noch einfacher das ganze programm in excel zu schreiben?

Gruß

Entweder mit XLSWRITE oder du schreibst die Werte als csv-file.
Private Nachricht senden Benutzer-Profile anzeigen
 
Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 16:50     Titel:
  Antworten mit Zitat      
fast perfekt!

das bekomm ich ausgespuckt:

>> theta=robot(x,y)
theta 1 = 0.0000
theta 2 = -62.1313
theta 3 = 25.8328
theta 4 = 2.0359


theta =

0 -62.1313 25.8328 2.0359

den unteren teil brauche ich nicht wo nur theta mit den 4 werten steht, wie bekomme ich den weg?

und kannst du mir das mit dem excel etwas erklären? brauche ich da eine zusatzsoftware oä?
 
soad
Forum-Century

Forum-Century


Beiträge: 150
Anmeldedatum: 10.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 18:18     Titel:
  Antworten mit Zitat      
Du hast das Semikolon beim Funktionsaufruf vergessen, damit unterdrückst du die Ausgabe.

Mit XLSWRITE kannst du die Werte in ein Excel spreadsheet schreiben - Zusatzsoftware benötigst du keine.
Private Nachricht senden Benutzer-Profile anzeigen
 
Heisenberg

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2011, 12:54     Titel:
  Antworten mit Zitat      
@ soad: Danke dir schonmal, warst mir eine große Hilfe!!

kannst du mir abern och im einzelnen erklären was dieser code bedeutet?

disp(sprintf('Theta %i. = %.4f\n', [1:length(theta); theta]))

was er genau macht und was die einzelnen befehle bedeuten?


und könntest du mir das mit excel etwas näher erläutern? hab keine ahnung wo ich diese funktion finde geschweige denn anwende Smile

danke schonmal und eine schönes wee!

gruß
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.10.2011, 13:09     Titel:
  Antworten mit Zitat      
Hallo Heisenberg,

Zitat:
kannst du mir abern och im einzelnen erklären was dieser code bedeutet?

Ich empfehle das Lesen der Dokumentation, insbesondere der "Getting Started"-Kapitel. Die Funktion spezieller Befehle ergründet man am besten mit "help" und "doc":
Code:

Wenn man eine so machtvolle Sprache wie MATLAB benutzen möchte, kommt man um das Lernen nicht herum.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 21.10.2011, 13:11     Titel:
  Antworten mit Zitat      
Schau dir doch bitte erstmal die entsprechenden Befehle in der Doku an...Klick mich Wink

Code:


Dort werden wohl 90% deinen Fragen beantwortet. Sollte dann noch etwas spezielles unklar sein, hilft dir sicherlich das Forum. Zum Thema xlswrite findet man hier unzählige Threads mit Lösungen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.