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

Matlab Skript in Simulink einbinden

 

Azador
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2008, 13:08     Titel: Matlab Skript in Simulink einbinden
  Antworten mit Zitat      
Hallo,

ich hab folgendes Problem. Ich habe einen Zustandsvektor den (Position, Winkel) mit dem ich gern eine Position ausrechnen würde die sich aus den einzelnen Winkel zusammensetzt.

Dabei sieht die FUnktion wie folgt z.B. aus:

y = cos(u(1))+cos(u(1)+u(2))

da sich die Funktion in Abhängigkeit von einer anderen Variable dauert ändert, kann ich nicht einfach einen Function Bloc nehmen und die Signale als Input verwenden.

Ich hab nun ein Skript geschrieben, dass die Gleichung für die einzelnen Fälle ausrechnet. Ich brauch halt nur noch die Winkel (u(1),u(2) usw..)

Wie kann ich nun ein Matlab Skript in einem Simulink Modell einbinden, ein Eingangssignal dafür festlegen und das Ausgangssignal abgreifen?

Ich hoffe ich konnte mein Problem genau genug erklären. Danke schon mal
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 18.06.2008, 13:40     Titel:
  Antworten mit Zitat      
Hallo,
In Simulink Library Browser gibt es uns User-Defined Functions genügend Blöcke(hier m-files), die man mit Matlab einbinden kann.

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Azador
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2008, 13:56     Titel:
  Antworten mit Zitat      
Geht leider nicht so richtig.

Also ich hab zwar nen Matlab-Fcn Block und wenn ich in diesem die Berechnungsvorschrift
y = U(1)....usw eingebe, dann funktionierts ohne Probleme.

Nun hab ich die Berechnungsvorschrift im Workspace als Variable (char) stehen. Wie bekomme ich das jetzt hin, dass ich diesen Ausdruck in den Function Block bekomme?


Ansonsten hab ich nur den "Level 2 M-File S-Function" Block, der mir aber meckert wenn ich das M-File eintrage, weil er dann sagt, ist keine Function ist ein Skript (wo er auch Recht hat) Ich will ja auch nur das Skript einbinden
Private Nachricht senden Benutzer-Profile anzeigen
 
Azador
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2008, 12:51     Titel:
  Antworten mit Zitat      
Also ich hab mich mal mit der Embedded M-Function etwas näher beschäftigt und ich denke ich kann die gut für mein Problem verwenden, allerdings hab ich folgendes Problem.

Wenn ich in dem Embedded File eine Schleife schreibe

Code:

    for d=1:5
        if d == 1
            Sum_A = u(2*d+1);
        else
            Sum_A = Sum_A+u(2*d+1);
        end

    end
 


Dann kommt folgende Fehlermeldung

"Variable "Sum_A" is undefined on som execution paths." Dazu ist das Sum_A rechts vom '=' im Else Fall hervorgehoben.

??Weiß da jemand Rat? Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
Christoph_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2008, 14:01     Titel:
  Antworten mit Zitat      
Hallo,
Embedded Matlab ist eine für effiziente Umsetzung in C-Code für z.B. eingebettete Steuergeräte gedachte Teilmenge von Matlab, die folglich einige Einschränkungen mit sich bringt, d.h. du kannst nicht allgemeine Matlab-Scripte damit ausführen.
Eine der Einschränkungen ist, dass der Compiler aus dem Programmtext statisch, d.h. bevor es das erste mal ausgeführt wird, die Datentypen und Größen sämtlicher Variablen herausanalysieren muss. Dazu muss er für jede Variable die erste Zuweisung finden.
Das geht in deinem Fall zwar, aber nur theoretisch. Er möchte wohl lieber sowas haben:

Code:

Sum_A = 0;
for d = 1:5
  Sum_A = Sum_A + u(2*d+1);
end
 
 
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.