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?
30.05.2015, 07:24 (Dieser Beitrag wurde zuletzt bearbeitet: 30.05.2015 08:10 von HaWe.)
Beitrag #9
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
dann nochmal zurück zur Ausgangsfrage an alle Kenner der Materie:
(28.05.2015 15:16)HaWe schrieb:  hallo,
ich möchte ein paar größere 2-dim float-Arrays (edit: auf dem Due) ö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
31.05.2015, 07:37
Beitrag #10
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
keiner hier der sich gut mit schnellem speichern/lesen auf SD Karten auskennt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 14:26
Beitrag #11
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
Hi,
ich kann zwar von mir nicht behaupten, dass ich mich damit auskenne. Ich glaube aber, dass das Bottleneck normalerweise das Schreiben selbst sein dürfte. D.h. es dürfte keine Rolle spielen, ob man die irgendwas mit byte-Pointern macht oder einfach die Arrays mit einer doppelten for-Schleife ausliest bzw. wieder zurückschreibt.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 18:38
Beitrag #12
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
ok, wenn das so ist, dann werde ich keine große Energie in solche Optimierungen stecken, sondern nur alle floats nacheinander schreiben!
Danke für den Tipp!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 19:40
Beitrag #13
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
Mach das mal und zeig dann hier Dein Coding. Vielleicht kann man es na doch hier und da ein wenig optimieren.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 22:37 (Dieser Beitrag wurde zuletzt bearbeitet: 31.05.2015 22:39 von HaWe.)
Beitrag #14
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
ich würde es dann so machen:

Code:
int32_t  fscanf_ ( File * stream, const char fmtstr[], ... ) {
   const  int32_t   MAXSTRSIZE = 1024;
   char   str[MAXSTRSIZE];
   va_list   args;
   int32_t   i=0, cnt=0;
   int16_t   chr;

   va_start(args, fmtstr);
    strcpy(str, "");
   while ( (stream->available()) && (i < MAXSTRSIZE-1) ) {  
      chr = stream->read() ;
      if (chr>=0 && chr!='\n') {
           str[i]=(char)chr;    
           ++i;
      }
      else break;    
   }
   str[++i] = '\0';                                                      
   cnt = vsscanf( str, fmtstr, args );
   va_end(args);

   return cnt;
}


//********************************************************************************​?***********

int32_t fprintf_ ( File * stream, const char fmtstr[], ... ) {
   char      str[1024];
   va_list   args;
   int32_t   num;
  
   va_start( args, fmtstr );
   num = vsnprintf(str, sizeof(str), fmtstr, args);
   stream->print(str);
   va_end( args );
   Serial.print("fprintf_:"); Serial.println(str);
   return num;
}

jetzt ins Blaue, nicht getestet:

schreiben:
Code:
for (i=0; i<100; ++i) {
   for (j=0; j<80; ++j)  {
      fprintf(myfile, "%f", farray[i][j]);
   }
}


lesen:
Code:
for (i=0; i<100; ++i) {
   for (j=0; j<80; ++j)  {
      fscanf(myfile, "%f", farray[i][j]);
   }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.06.2015, 17:16
Beitrag #15
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
ps,
es muss in beiden Fällen
&myfile
heißen.

Funktionierender Beispielcode für fprintf und fscanf hier (den würde ich dann entsprechend abwandeln):

http://www.mindstormsforum.de/viewtopic....429#p66429
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.06.2015, 18:24
Beitrag #16
RE: große 2-dim float-Arrays schnell auf SD speichern und zurücklesen?
Hi,
das würde ich nur so machen, wenn die Daten auch für Menschen lesbar sein sollten. Ansonsten würde ich die floats direkt rausschreiben. D.h. als "Binary Data".
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
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 679 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 407 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 688 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.613 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