|
|
Matlab-Funktion "cholupdate" als Simulinkblock? |
|
tobi7212 |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 27.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 2010a
|
|
|
|
|
|
Verfasst am: 25.09.2010, 16:24
Titel: Matlab-Funktion "cholupdate" als Simulinkblock?
|
|
|
|
|
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
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
|
|
|
|
|
tobi7212 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 27.04.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: Matlab 2010a
|
|
|
|
|
|
Verfasst am: 26.09.2010, 17:55
Titel:
|
|
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.
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
|
|
|
|
|
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.
|
|