Ich soll für eine Projektarbeit mittels einer Matlabfunktion das Geburtsdatum in der Form DDMMJJJJ abfragen und übergeben. Aus dieser Funktion wird dann nach der Formel m = (JJJJ/100) * MM + DD eine Masse berechnet.
Bisher habe ich nur herausgefunden das ich das über Vektoren lösen muss, habe aber bisher keine Ahnung wie ich die Abfrage gestalten soll und wie nachher in der Formel das Geburtsjahr, der Geburtsmonat und der Tag getrennt werden sollen. Vielleicht könntet ihr mir Tips geben wie ich am besten anfange.
Dabei ist datum ein String im von dir angegebenen Format, oder ein Cell Array von solchen Strings.
Grüße,
Harald
fontsix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 31.08.2010, 20:28
Titel:
Hallo nochmal ich habe jetzt versucht das ganze als Funktion zu basteln. Allerdings denke ich das mit den Ausgabewerten und Eingabeparametern etwas nicht stimmt. Jedenfalls werden die ganzen Ausgabewerte nicht in den Workspace geschrieben ? Kann mir da vielleicht jemand auf die Sprünge helfen und was kann ich für Fehlerabfänge machen ? Ich dachte z.B. das die Länge des Geburtsjahrs überprüft wird (8 Zeichen) oder dd darf nicht größer als 31 und mm nicht größer als 12 sein darf
geb sollte entweder übergeben ODER zur Laufzeit abgefragt werden. Ansonsten sieht das gut aus. Damit alle Parameter an den Workspace zurückgegeben werden, muss die Funktion auch mit allen Parametern aufgerufen werden, z.B.
entweder übergeben ODER zur Laufzeit abgefragt werden
. Kannst Du das etwas genauer erklären ?
Ich würde die Funktion gerne so schreiben das das Geburtsdatum kein fester Wert ist. Wie kann ich das realisieren ? Ich vermute mal das das durch
Zitat:
datum('03021989')
nicht gegeben ist.
geb ist ausserdem gelb hinterlegt, wenn ich darauf gehe gibt mir Matlab an "Input argument 'geb' might be unused. If this is OK, consider replacing it by ~"
a1=1; %Faktor für den Luftwiderstand
a2=1; %Faktor für den Luftwiderstand
x=-30; %Länge des Seils ohne Ausdehnung
h=50; %Absprunghöhe [m]
g=9.81; %Gravitationskonstante [m/s²]
k= [6575]; %Federkonstante
Sorry aber ich glaube wir reden immernoch aneinander vorbei. Mein Problem ist es jetzt das einfach nicht dd, mm und jjjj in den workspace geschrieben werden, danach möchte ich die Masse über eine Unterfunktion berechnen und danach das Simulink Modell automatisch aufrufen und simulieren.
Ich weiß leider immer noch nicht was an dem Code falsch ist. Sorry
siehe erster Post zum Funktionsaufruf. Du rufst die Funktion anscheinend ohne Ausgabeargumente auf, evtl. über den grünen Pfeil.
Grüße,
Harald
fontsix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.09.2010, 21:18
Titel:
Zitat:
Du rufst die Funktion anscheinend ohne Ausgabeargumente auf
Sind meine Ausgabeparameter nicht "jjjj , mm und dd" ?
Zitat:
evtl. über den grünen Pfeil
Wie startet man ein m-file wenn nicht über den grünen Pfeil ?
Ich bin jetzt durch weitere Suche auf die Befehle global, persistant, assignin und evalin gestossen ? Helfen mir die Befehle bei meinem Problem irgendwo weiter ? Sorry Harald aber ich ich verstehe bei Deinen Antworten einfach nichts. Die Variablen werden trotz allen Versuchen immernoch nicht in den Workspace geschrieben.[/b]
fontsix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.09.2010, 22:25
Titel:
So in etwa stelle ich mir das dann vor aber warum muss ich alle Variablen im Command Window von Matlab extra als global definieren, damit sie in den Workspace übergeben werden ?
Das verstehe ich einfach nicht. Ich habe schon probiert die Variablen in der m-file vor dem Befehl function als global zu definieren, aber da meckert das probgramm.
... und deine Variablen sind im (Base) Workspace - ohne, dass sie als global definiert werden mussten.
Der Grund, warum sie vorher nicht in diesem Workspace waren, ist, dass jede Funktion ihren eigenen Workspace hat, um das ganze übersichtlicher zu gestalten, und nur die Ein- und Ausgabevariablen übergeben werden.
Ich empfehle wärmstens ein ausführliches Studium eines einführenden Skripts, Buchs oder der einführenden Teile der Dokumentation. Dann sollten so grundlegende Konzepte klar werden.
Grüße,
Harald
fontsix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 02.09.2010, 11:26
Titel:
Das verstehe ich schon das Funktionen einen eigenen workspace haben, dennoch möchte ich nichts extra im command window eingeben müssen bis eben auf die abfrage des geburtsdatums. Danach soll die funktion ausgeführt werden, dh. aus mm, dd und jjjj die Masse berechnet werden und alle variablen in den base workspace geschrieben werden und erst wieder geändert werden wenn sich der geburtstag ändert. Das ist die Sache wo ich mir schon seit tagen die zähne daran ausbeisse. Eigentlich doch nicht schwer, oder ?
Wie führst du die Funktion denn momentan aus? Über den grünen Pfeil? Dann kannst du über den Pfeil nach unten rechts neben dem grünen Pfeil auf "Edit Run Configurations" gehen und dort das von mir genannte eingeben.
Zitat:
und erst wieder geändert werden wenn sich der geburtstag ändert
Wie änderst du den Geburtstag? Über eine erneute Ausführung der Funktion?
Ich bekomme auch den Eindruck, dass du lieber mit einem Skript als mit einer Funktion arbeiten solltest - dazu einfach die "function"-Zeile am Anfang weglassen. Die Berechnung der Masse kann ja in einer (separaten) Funktion bleiben.
Grüße,
Harald
fontsix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 02.09.2010, 13:03
Titel:
Ja momentan führe ich die Funktion immer über den grünen Pfeil aus. Das Geburtsdatum ändere ich über eine erneute ausführung der funktion. Vielen dank erstmal ich werde die Lösungsvorschläge nachher noch einmal probieren wenn ich wieder zu hause bin.
Gibt es bei diesen Scriptdateien irgendetwas besonderes zu beachten ? Im Prinzip ist es ja auch nur ein m-file aber ohne function am Anfang.
Einstellungen und Berechtigungen
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
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.