(28.07.2011 10:41 )Hep schrieb: Da ich fünfdimensional aufnehme (x,y,z,zeit,unterschiedliche Farben) wird die initialisierung mir zu unübersichtlich in Labview, und daher mache ich das mit Matlab. Ich rufe einen Matlab-Skriptknoten auf, von dem aus ein .m file aufgerufen wird, das mir einen Array erstellt, den ich aus dem Knoten auslese. Meine Daten sind U16, der Scriptknoten verwendet Double. Das braucht sicher einiges an Konvertierung. Außerdem benötige ich Speicher in LV für die Daten und redundant dazu auch in Matlab.
Nun war meine Idee, aus dem Matlab-code eine dll zu machen und die einzubinden. Hat da jemand erfahrung? geht das gut?
Die Matlab DLL wird an Deinem Performance Problem kaum etwas ändern. Der Transfer mit Datenkonvertierung wird im wesentlichen bestehen bleiben. Dein Problem ist ein typisches: will man während der Entwicklung Zeit und Gehirnschmalz sparen kostet das später jedesmal Zeit und Performance bei jedem Run. Wenn man sich dagegen hinsetzt und einmal genau darüber nachdenkt was wie getan werden muss, kann man mit etwas "trial and error" auch 5-dimensionale Arrays bändigen. Das geth in LaVIEW selbst sehr einfach da Du da ja auch nicht jedesmal crasht wenn etwas nicht stimmt. In C oder mit DLLs kann ein Byte zu wenig schon genug sein und Du darfst die Applikation wieder neu starten. Man macht sich diese Mühe einmal und hat dann eine Applikation die auch schnell läuft.
Zitat:Und außerdem: kann man den LV zur verfügung stehenden Speicher erweitern?
LabVIEW kann soviel Speicher benützen wie Windows per Applikation zur Verfügung stellt. Unter Windows 32 bit ist das 4GB von dem die Hälfte für Windows reserviert ist. Mit einem switch in boot.ini kann der verfügbare Speicher per App auf 3GB erhöht werden. Natürlich sollte die Maschine dann auch 4GB verfügbaren Speicher haben (eventuellen shared Video Speicher kann da ziemlich negativ reinschlagen) anders macht der 3GB Switch die Dinge nur noch schlimmer.
Unter 64 Bit Windows mit 64 Bit LabVIEW hast Du per Applikation erst mal beinahe soviel Speicher verfügbar wie die Maschine an physikalischem Memory zur Verfügung hat.