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-Funktion "cholupdate" als Simulinkblock?

 

tobi7212
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.04.10
Wohnort: ---
Version: Matlab 2010a
     Beitrag Verfasst am: 25.09.2010, 16:24     Titel: Matlab-Funktion "cholupdate" als Simulinkblock?
  Antworten mit Zitat      
Hallo ins Forum!
Ich habe da einen Wunsch:Ich hätte gern die Matlab-Funktion "cholupdate" als Simulinkblock, sodass sie sich mit real-time-Workshop verträgt. Ich brauch also ne s-Function wenn ichs richtig verstanden habe.
Da die Antwort darauf verständlicherweise wäre: "Frag Google" oder "Wir sind nicht deine Mitarbeiter", werd ichs mal anders formulieren.

Ich möchte gern von euch wissen, wie es für mich am einfachsten ist mein Ziel zu erreichen.

Oder doch mal vorweg: Weiß jemand vielleicht, wo es derartige Funktionen fix und fertig oder als C-Code, oder Matlab-Code zum runterladen gibt?

Kurz zur Funktion (is aber wohl nicht wichtig): es ist das update einer vorhanden Cholesky-Zerlegung. (Function updates an augmented Cholesky

decomposition) siehe: http://de.wikipedia.org/wiki/Cholesky-Zerlegung



Ich kenne mich nix mit Fortran aus aber etwas in C.
Die Matlab-"cholupdate"-Funktion ist bei http://www.netlib.org/linpack/ als Fortran Funktion verfügbar.
Sie heißt laut http://www.mathworks.com/help/techdoc/ref/cholupdate.html ZCHUD/ZCHDD ist dort aber auch für single und double datentypen verfügbar.

Im Fileexchange hab ich irgend ne Funktion gefunden, die Fortran to Matlab übersetzen kann. Ging aber auf anhieb nicht, und da ich nixFortran kann Sad
Evtl gibts noch Cross-Compiler Fortran to C, weiß aber nicht.
Dann ist es das erste mal, dass ich die mex-Funktion benutzen werden, weiß also noch nicht welchen Fortran-Compiler ich benötige, der mit Matlab läuft

und möglichst nix kostet.
MUss ich besser level 1 oder 2 s-Functions bauen?

Also viele Ansatzpunkte und ich weiß nicht wo mir der Kopf steht. Wo soll ich anfangen?
Womöglich muss man die Fortran-Funktion noch speziell vorbereiten um sie mit mex zur s-Funktion zu machen?
Muss ich also Fortran lernen? oder gehts irgendwie anders?

Mit den besten Grüßen
Tobias
Private Nachricht senden Benutzer-Profile anzeigen


tobi7212
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.04.10
Wohnort: ---
Version: Matlab 2010a
     Beitrag Verfasst am: 26.09.2010, 17:55     Titel:
  Antworten mit Zitat      
Ich habe mal weiter recherchiert und die Seite
http://www.cise.ufl.edu/research/sparse/cholmod/
gefunden, wo es die Funktion auch als C-Code gibt.
Ich konnte daraus sogar eine mexw32 datei erzeugen, welche von matlab wie jede andere Funktion verwendbar ist. Smile
Der Aufruf ist:
LD = ldlupdate (LD,C)
oder
LD = ldlupdate (LD,C,'+')
Jetzt kann ich aber anscheinend nicht einfach in Simulink mir einen S-Function-Block nehmen und auf die Funktion verweisen. Fehlermeldung:
Zitat:

Error due to multiple causes-->Usage:L=ldlupdate(L,C.'+') -->Error while obtaining size from MEX S-function 'ldlupdate' in 'Simtestldlupdate/S-Function'. Matlab error message: Usage:L=ldlupdate(L,C,'+')

Aber warum? Was ist noch zu beachten? Kommt er vielleicht nicht klar, weil ich über den S-function-Block-eingang kein '+' übergeben kann? Geht das prinzipiell nicht und ich muss speziell für Simulink mit mex kompilieren?
Hat vielleicht jemand einen Tipp?
mit den besten Grüßen
Tobi
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.