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

Ampelschaltung

 

Che
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 10.03.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 11.03.2014, 15:00     Titel: Ampelschaltung
  Antworten mit Zitat      
Hey,

vielleicht haben manch andere schon meinen anderen Thread in 'Programmierung' gesehen. Da habe ich ein bisschen Hilfe gebraucht für eine Klausuraufgabe für IT für den Maschinenbauer in Matlab.

Ich zitiere mich mal gerade aus dem anderen Topic, da ich denke, dass das SimulinkForum jetzt besser ist: Ich bin nicht fit in Simulink und Matlab auch nicht wirklich, also bitte verzeiht jegliche unwissenheit:

Ich probiere mich gerade an der Aufgabe 3 vom Programmierteil mit Simulink, aber scheitere glaube ich kläglich.

Ich habe probiert, das ganze nachzubauen, um den Code gleich programmieren zu können, und später zu schauen und zu überprüfen, ob der Scope derselbe ist, der herauskommt.

Bekomme es nicht hin, bei der Simulink-Simulation den hier rot-markierten Pfad zu verbinden.





Aufgabenstellung:



Mein Matlab-code bisher (bitte nicht lachen):
Code:
function farbe = Ampelregelung(zeit)
farbe(zeit);
if zeit = 0:1.0:20
    farbe = rot;
    elseif zeit = 20:1.0:40
        farbe = gruen;
        else zeit = 40:1.0:50
            farbe = gelb;
           

farbe = zeit;
end


ich hätte jetzt z.B. in der ersten Zeile schon function[farbe]=Ameplregelung(Zeit) da stehen gehabt, aber als ich einen Matlab-Block in Simulink reingezogen hab, hat er das schon so übernommen.

Run-Model sagt:
Zitat:
Function 'MATLAB Function' (#36.58.59), line 3, column 9:
"="


glaube das ist alles falsch ^^
Hat jemand einen anderen Befehl zum ansetzen mit dem ich arbeiten kann? bzw Befehle?


LG und Danke =)
Private Nachricht senden Benutzer-Profile anzeigen


Che
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 10.03.14
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 12.03.2014, 11:01     Titel:
  Antworten mit Zitat      
Hab jetzt durch einen Kommilitonen eine Version von ihm bekommen:

Code:
function farbe = fcn(zeit)
%0 = Rot
%1 = Grün
%2 = Gelb

persistent i;

if (isempty(i))
    i=0;
end

time = zeit - (i*45);

if (time < 20)
    farbe = 0;
elseif (time < 40)
    farbe = 1;
elseif (time < 45)
    farbe = 2;
else
    i=i+1;
    farbe = 0;
end


end



Hier sind mir die Teile

Code:
persistent i;

if (isempty(i))
    i=0;
end

time = zeit - (i*45);
 

und am schluss:
Code:
else
    i=i+1;
    farbe = 0;
end


nicht klar.

die ganzen if-bedingungen sind mir klar.
ich hätte das aber nicht eine neue "time" definiert, sondern ich hätte es direkt mit der "zeit" gemacht.

Was sagen mir persistent und was sagt mir isempty. ist der letzte Befehl ein richtiger Befehl oder hätte ich auch "istleer" nennen können ^^?
Wann weiß ich, wenn ich persistent benutzen sollte. Kann ich mir da irgendwas ableiten von?

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 12.03.2014, 13:06     Titel:
  Antworten mit Zitat      
Hallo Che,

als kleiner Tipp: Matlab hat eine gute Hilfe
Code:


persistent sorgt dafür, dass die variable "permanent" ist. D.h. sie wird nicht nach dem Funktionsaufruf gelöscht, sondern ist beim nächsten Funktionsaufruf immernoch mit dem gleichen Inhalt verfügbar.
isempty ist eine Funktion die von Matlab mitgeliefert wird und checkt, ob i = [] (leer) oder i = 1 (nicht leer) ist.

der letzte Teil mit Farbe sagt, dass die Ampel rot ist, wenn sie nicht grün oder gelb ist.
time ist eine Hilfsvariable um zu schauen, an welchem Zeitpunkt man sich in dem 45 Sekunden-Intervall befindet. Eine Ampel läuft ja nicht nur einmal 45s sondern durchläuft den Zyklus immer wieder.

Grüße
Chris
_________________

--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Wink
Richtig fragen!
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.