INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
28.05.2015, 15:16 (Dieser Beitrag wurde zuletzt bearbeitet: 28.05.2015 15:17 von HaWe.)
Beitrag #1
große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
hallo,
ich möchte ein paar größere 2-dim float-Arrays öfters zwischendurch auf SD speichern und dann zwischendurch oder auch beim Neustart des Arduinos wieder ins RAM zurück einlesen, z.B.:

float Input[100][100];
float Target[100][20];
float WeightLIn[100][20];
float WeightLOut[20][20];

Ich habe nun wenig Erfahrung mit SD-Karten -
was denkt ihr, was ist aus eurer Erfahrung der schnellste Weg zum Speichern und Lesen dieser Arrays?
Macht es einen großen Unterschied, ob man das Zelle für Zelle macht oder irgendwie als Block?
Wenn als Block: wie am besten?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 05:44
Beitrag #2
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
(28.05.2015 15:16)HaWe schrieb:  ...
float Input[100][100];
float Target[100][20];
float WeightLIn[100][20];
float WeightLOut[20][20];
....

Hi,
soviel passt in ein Arduino RAM gar nicht rein, alleine dein Input Array verschlingt 10000 * 4 Bytes sprich das sind 40KByte. 2Kbyte stehen beim UNO zur Verfügung. Beim Mega2560 sind es 8KB.
Besser sieht es aus beim DUE mit 96KB und beim YUN könntest auf die 64MB auf der Linuxseite zurückgreifen sofern das Linux genügend Platz läßt...Big Grin
Also Roundabout benötigst du für deine oben angegebene Felder 40+8+8+2 = 58KB RAM.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 10:02
Beitrag #3
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
haha, wer spricht denn von einem Mega?
ich arbeite mit einem Arduino Due, und da passt noch viel mehr rein - guckst du hier:

http://www.mindstormsforum.de/viewtopic....043#p67035

und jetzt brauch ich ne Möglichkeit, das zu speichern Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 11:03
Beitrag #4
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
(29.05.2015 10:02)HaWe schrieb:  haha, wer spricht denn von einem Mega?
ich arbeite mit einem Arduino Due, und da passt noch viel mehr rein - guckst du hier:

http://www.mindstormsforum.de/viewtopic....043#p67035

und jetzt brauch ich ne Möglichkeit, das zu speichern Smile

aha...ein Programm für Neurotiker Tongue , sagte doch das es in den DUE reingeht...oda..Big Grin

...ob die unscharfe Logik vom letzten Jahrtausend wohl auch ein Comeback bekommt---Rolleyes

aba...ne SD schreiben und lesen solltest doch hinkriegen...entweder gleich alles in Bytes zerlegen oder in String wandeln...so das es als Textdatei lesbar ist.
Ich würde wohl Bytes als Hexwert speichern weil dann die Länge fix ist.

lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 11:16 (Dieser Beitrag wurde zuletzt bearbeitet: 29.05.2015 11:21 von HaWe.)
Beitrag #5
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
über neuronale Netze können wir gern mal woanders diskutieren, aber hier erstmal nur zum Speicherproblem:

ist es möglich einen array, z.B.
float arr[100][100]

per Pointer zu referenzieren (sagt man das so ?)
und dann einen weiteren Pointer mit derselben Adresse zu definieren, der aber auf einen Speicherbereich an Bytes zeigt?

Dann muss man nämlich nicht rumkopieren, und könnte gleich den Byte-Bereich als quasi "linearen" Byte-Array (4x100x100) schreiben, was ansonsten in diesem Fall wegen RAM tatsächlich etwas grenzwertig wäre... Undecided

(29.05.2015 11:16)HaWe schrieb:  über neuronale Netze können wir gern mal woanders diskutieren, aber hier erstmal nur zum Speicherproblem:

ist es möglich einen array, z.B.
float arr[100][100]

per Pointer zu referenzieren (sagt man das so ?)
und dann einen weiteren Pointer mit derselben Adresse zu definieren, der aber auf einen Speicherbereich in Byte-Form zeigt?

Dann muss man nämlich nicht rumkopieren, und könnte gleich den Byte-Bereich als quasi "linearen" Byte-Array (4x100x100) schreiben, was ansonsten in diesem Fall wegen RAM tatsächlich etwas grenzwertig wäre... Undecided

huch, was ist jetzt passiert?

kann meinen Artikel nicht mehr editieren - seltsam ...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 11:43
Beitrag #6
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
(29.05.2015 11:16)HaWe schrieb:  über neuronale Netze können wir gern mal woanders diskutieren, aber hier erstmal nur zum Speicherproblem:

ist es möglich einen array, z.B.
float arr[100][100]

per Pointer zu referenzieren (sagt man das so ?)
und dann einen weiteren Pointer mit derselben Adresse zu definieren, der aber auf einen Speicherbereich an Bytes zeigt?

Dann muss man nämlich nicht rumkopieren, und könnte gleich den Byte-Bereich als quasi "linearen" Byte-Array (4x100x100) schreiben, was ansonsten in diesem Fall wegen RAM tatsächlich etwas grenzwertig wäre... Undecided

Die Idee würde das geschehen vereinfachen, aber woher weis man wo das Array anfängt und wie adressiert man das dann ? Das wären dann die entscheidenden Fragen.

(29.05.2015 11:16)HaWe schrieb:  über neuronale Netze können wir gern mal woanders diskutieren, ...

ohhh....da bin ich der Falsche, ich bin weder ronal noch neu....eher schon alt...Big Grin
Klar, gehört hab ich davon schon lange...nur keinen Bezug dazu.

lg
bk
P.S. editieren...bei mir gings..

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 14:30 (Dieser Beitrag wurde zuletzt bearbeitet: 30.05.2015 07:22 von HaWe.)
Beitrag #7
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
ich dachte an was in dieser Art:

Code:
float    *fptr, fArr[100][100];
unit8_t  *bptr, bArr[];

fptr = &  fArr;  // Startadresse des fArr[][]
bptr = fptr;

Jetzt hätte man einen pointer auf byte, der an die selbe Stelle im Speicher zeigt, wo auch der große fArr[][] anfängt.
Aber dann wie weiter?
die Länge wüsste man ja, aber ich will keine Kopie anlegen, sondern den Bereich von 4*100*100 Bytes ab dieser Speicheadresse in einem Rutsch auf SD schreiben.
So meintest du das doch auch mit deinem Byte-Vorschlag oder?

Und wie lese ich das ganze später in 1 Rutsch zurück, sodass man wieder als fArr[][] damit rechnen kann ?

(edited)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.05.2015, 22:20
Beitrag #8
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
..kann dir da nicht folgen, Pointer in C sind nicht meine Welt. Sorry
Wäre das in Assembler....
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Fehler beim Speichern von Projekten Manni66 16 681 23.08.2016 10:05
Letzter Beitrag: hotsystems
  Gewichteten Durchschnitt berechnen, 20 Werte in fortlaufender Variable speichern TimeMen 10 463 03.07.2016 09:00
Letzter Beitrag: Binatone
  String in EEPROM Speichern BennIY 2 404 27.06.2016 10:23
Letzter Beitrag: BennIY
  Messwerte in Array speichern ArduinoMega2560 2 408 07.06.2016 16:30
Letzter Beitrag: SkobyMobil
  Rechnen mit float und unsigned long Rudi 3 300 03.06.2016 12:41
Letzter Beitrag: hotsystems
  Sensordaten in MYSQL speichern rieders 3 690 02.03.2016 19:58
Letzter Beitrag: rieders
  float in eeprom goldfisch 4 666 28.12.2015 18:54
Letzter Beitrag: Bitklopfer
  Float über I2C zwischen 2 Arduinos UNO Marduino_UNO 9 1.616 19.10.2015 09:09
Letzter Beitrag: Retian
  Umrechnung float Geodaten in Grad'Min'Sec.secfrac HaWe 0 600 04.10.2015 11:42
Letzter Beitrag: HaWe
  Ergebnis lässt sich nicht speichern? schuballaa 2 624 30.08.2015 17:07
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste