Noch eine Idee: mit referenzen statt mit Variablenübergabe arbeiten. Also die Rechnung in einer DLL verpacken. Ich mache das mit sehr großen Arrayoperationen immer.
Hier mal der Kontext. Links befuelle ich ein Array und zwar mit Kontrollelementen, wie man hier gelernt hat. Das Problem taucht dann rechts auf, wenn ich die Daten zu DAQmxWrite uebergebe. Dieses DAQ akzeptiert nur Double als Eingang. Aber da ich nur zwei verschiedene Werte ausgeben moechte (0 und 4, stehen fuer 0 und 4 V, TTL), wuerde auch ein U8 reichen. Wenn ich allerdings links mein Array nicht als double definiere, akzeptiert sie der DAQ nicht.
Das Array mit 4000x10000x2 =80 Millionen Elementen belegt also 640 MB, obwohl 80MB (bei U8) ausreichen wuerden.
[
attachment=18848]
VI als Version 8.0 gespeichert, getestet auf Version 8.5.1
[
attachment=18847]
Es ist nur ein Crosspost fuer Personen die deutsch und englisch gleichzeitig verstehen; fuer den groessten Teil der LV-User ist es damit kein Crosspost.
Egal, mir gehts nur um die Loesung des Problems. Damit stelle ich fest, das noch jemand reinschaut.
' schrieb:Es ist nur ein Crosspost fuer Personen die deutsch und englisch gleichzeitig verstehen
Und das dürften zumindest im LVF die meisten sein! Somit Crosspost. Einfach immer Link angeben, und dann ist es sowas in Ordnung.
So, noch ein Tipp, schon mal darüber nachgedacht, unskalierte Werte zu übertragen:
[
attachment=18865]
Dann hast du "nur noch" 160 MB.
Und Vorsicht, bei deinem Beispiel überträgst du U8-Array ohne Typumwandlung in ein DBL-Array, das dürfte auch Speicher fressen bei der Typumwandlung.
Gruß, Jens
Ohne mich zu weit aus dem Fenster lehnen zu wollen, denke ich dass hier im LVF jeder auch Englisch kann.
Gruß Markus
EDIT: Mist, Jens war schneller.
' schrieb:Es ist nur ein Crosspost fuer Personen die deutsch und englisch gleichzeitig verstehen; fuer den groessten Teil der LV-User ist es damit kein Crosspost.
Egal, mir gehts nur um die Loesung des Problems. Damit stelle ich fest, das noch jemand reinschaut.
' schrieb:So, noch ein Tipp, schon mal darüber nachgedacht, unskalierte Werte zu übertragen:
Bei RAW-Daten habe ich einen Wertebereich von 0...bis 2^16-1 oder -2^15....2^15-1 und damit stelle im gewählten Spannungsbereich die Spannung in 2^16 Abstufungen ein, oder?
' schrieb:Ohne mich zu weit aus dem Fenster lehnen zu wollen, denke ich dass hier im LVF jeder auch Englisch kann.
Im englischsprachigen Forum sprechen aber die meisten kein deutsch.
Erstens steht das so in den LVF-Regeln und da hast auch Du Dich daran zu halten und zweitens sind in den englischsprachigen Foren auch viele Deutsche unterwegs.
Gruß Markus
' schrieb:Im englischsprachigen Forum sprechen aber die meisten kein deutsch.
' schrieb:Bei RAW-Daten habe ich einen Wertebereich von 0...bis 2^16-1 oder -2^15....2^15-1 und damit stelle im gewählten Spannungsbereich die Spannung in 2^16 Abstufungen ein, oder?
Ich denke, ja. Aber bitte einfach mal selber probieren.
Gruß, Jens