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

Embedded Matlab Function

 

Norman
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2009, 19:07     Titel: Embedded Matlab Function
  Antworten mit Zitat      
Hallo zusammen,

Ich hab den Artikel schon im Forum Programmierung reingestellt. Der pass hier aber besser rein.

Ich habe folgendes Problem bei einer Embedded Matlab Function (EMF).
Der Quelltext ist ziemlich umfassend. Ich habe daher ein kleines Beispiel für euch, welches den gleichen Fehler erzeugt.

In der EMF steht folgender code:

Code:

function d = Beispiel(a,b)

test = inline('a^2');

c = feval(test,a);      

d = fnc(b,c);

end
 


Die Eingänge des Simulinkblocks sind mit konstanten verbunden.
in einem m-file steht die Funktion "fnc"
Hier der code:

Code:

function c = fnc(a,b)

%#eml

c = a+b;

end
 


Beim starten der "Simulation" kommt einer der folgenden Fehler:

Zitat:

Expected either a logical, char, int, fi, single, or double. Found a MATLAB type. MATLAB types are returned from calls to the MATLAB interpreter and are not supported inside expressions. They may be used on the right-hand side of assignments and as arguments to MATLAB calls.

Function 'fnc.m' (#38.36.37), line 5, column 7:
"b"


Wie kann ich das Problem lösen? Der Inhalt von "c", welche an fnc übergeben wird dort "b", ist vom Typ int. Muss ich das Matlab irgendwie noch mal klar machen?

Vielen Dank schon mal im voraus für Lösungsvorschläge.

Grüße

Norman
_________________

Matlab 7.5.0 (R2007b)
Private Nachricht senden Benutzer-Profile anzeigen


Norman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.07.2009, 12:15     Titel:
  Antworten mit Zitat      
Ich hab das Problem selber gefunden. Einen Hinweis fand ich in der Simulink Hilfe (Simulink Help - Calling Functions in Embedded Matlab - Working with mxArrays)

Für diejenigen, die es interessiert.
Vor dem Funktionsaufruf muss man der Variablen einen Typ zuweisen. Hier ganz einfach: c = 0; (c ist dann vom Typ double und Matlab ist zufrieden). Die Funktion "fnc", die ja eigentlich den Fehler auslöst, bleibt unverändert.

Noch mal der code:

Code:

function d = Beispiel(a,b)

test = inline('a^2');

c = 0; %Zuweisung, dass c vom Typ double ist
c = feval(test,a);      

d = fnc(b,c);

end
 


Norman
_________________

Matlab 7.5.0 (R2007b)
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.