|
|
Simulink - Array output einer Matlab function |
|
Sandreal |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 03.06.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.12.2012, 14:36
Titel: Simulink - Array output einer Matlab function
|
|
Hallo zusammen,
ich verwende in Simulink eine Matlab function, die drei verschiedene Arrays als Output erzeugt. Beim Starten der Anwendung erhalte ich den Fehler "Unable to locate a C-compiler required by Steteflow and MATLAB Function blocks. Use 'mex -setup' to select a supported C-compiler." Was hat es mit mex auf sich und warum ist es so umständlich simple Matlab-Funktionen in Simulink zu verwenden?
Grüße
Sandreal
|
|
|
|
|
CoDerAbt |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 06.12.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.12.2012, 18:47
Titel: csfunc.m
|
|
Schau mal unter "C:\Program Files\MATLAB\R2012b\toolbox\simulink\simdemos\simfeatures\" und guck dir die Beispielfunction "csfunc.m" an. Das ist eine MATLAB Level-1 s-function; anhand des Beispiels mal deinen Code vergleichen. mex steht für MatlabEXecutable. Wenn s-functions nicht in MATLAB geschrieben werden, sondern in C, C++ oder FORTRAN, dann müssen die Codes mit einem Compiler zu einer mex-Datei konvertiert werden. Erst dann kann die Simulink Engine die s-function lesen... Stell mal den Code rein, vor allem, wie du die Arrays in den Outputs definierst... Grüße
|
|
|
Sandreal |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 03.06.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.12.2012, 15:58
Titel:
|
|
Danke CoDerAbt für die Rückmeldung!
Ich arbeite an einer Fahrwerkssimulation und möchte nun zuerst mit Hilfe eines Motorkennfeldes aus den Inputwerten Gaspedalstellung und Drehzahl das Drehmoment berechnen (s. Blockschaltbild.jpg). Dabei verwende ich die Matlab function Blöcke TorqueInit und torque, die wiederum die Matlab Funktionen Torque und TorqueLoad aus m-files aufrufen.
Das Problem ist nun wie gesagt, dass die Outputwerte bei TorqueInit Arrays sind und der Matlab Function Block damit scheinbar nicht arbeiten kann. Idee wie ich das lösen kann?
Was versteht man denn unter s-functions?
Grüße
Sandreal
Beschreibung: |
|
Download |
Dateiname: |
Blockschaltbild.jpg |
Dateigröße: |
30.35 KB |
Heruntergeladen: |
1038 mal |
|
|
|
CoDerAbt |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 06.12.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.12.2012, 16:33
Titel:
|
|
Hallo Sandreal,
versuch doch mal:
Sieht simpel aus, könnte aber aufgrund der Übergabe des Arrays so funktionieren...
hast du [X Y kennfeld] = TorqueLoad(kennfeldFile); im CommandWindow oder so schon mal probiert, ob das Auslesen korrekt funktioniert?
s-function ist kurz für system-functions. Damit können diskrete oder kontinuierliche Funktionen geschrieben werden. Ich benutze sie, um partielle DGLs in Simulink zu lösen.... ein einfaches Beispiel ist die csfunc.m in deinem Systemordner. Das ist eine s-function, die in m-Code geschrieben wurde.
Grüße
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|