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
Problem mit Array-Muster-Vergleich
07.05.2015, 16:08 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2015 16:19 von HaWe.)
Beitrag #1
Problem mit Array-Muster-Vergleich
hi,
ich habe momentan eine Ladehemmung für den richtigen Programmier-Ansatz.

Problem:
ich habe eineReihe von (p) Muster-Arrays mit je (i) ints, z.B. stark reduziert:
a[1][3]
a[2][3]
a[3][3]
a[4][3]
a[5][3]

und einen aktuellen array
c[3]

ich will nun gucken, in welchem der 5 Muster genau dieselben ints in jeder Zelle sind wie im aktuellen, also
if ( (a[1][1]==c[1]) && (a[1][2]==c[2]) && (a[1][3]==c[3]) ) {match=1;}
else
if ( (a[2][1]==c[1]) && (a[2][2]==c[2]) && (a[2][3]==c[3]) ) {match=2;}
else
if ( (a[3][1]==c[1]) && (a[3][2]==c[2]) && (a[3][3]==c[3]) ) {match=3;}
// usw...
else
match=-1; // kein Treffer!

das geht ja noch.

Aber jetzt habe ich eine variable Anzahl von Mustern (ändert sich während der Laufzeit) mit einer konstanten Anzahl von ints pro Zeile (ändert sich zur Kompilierungszeit). Daher kann ich jetzt nicht alle Werte einzeln per && hintereinanderschreiben,
außerdem wird das ein bisschen viel bei ~100 Mustern zu je ~20 int Werten.

Wie kann man das jetzt in eine Schleife packen???
Huh



Code:
int16_t  CheckInputPatterns() {
   int16_t   match=-1;  // -1 == no match
   int16_t   p,i;
/*  
   for( p = 1 ; p <= NumPattern ; p++) {  //  nimm p-tes Muster an Input-Besetzung, eins nach dem anderen
      for( i = 1 ; i <= NumInput ; i++) {  //  wenn alle Inputs völlig identisch besetzt sind
         if (Input[p][i] ) == currIn[i]) && ... {  // für alle Inputs von 1 bis NumInput
           match=p; break;    // speichere die Nummer des Musters, dann => fertig !
           // aber wie weiter mit den && bei unbekannter Länge, iterativ geschrieben ??
         }
      }
   }
*/
   return match;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.05.2015, 16:58
Beitrag #2
RE: Problem mit Array-Muster-Vergleich
Hi,
als als erstes: Arrays fangen bei 0 an und gehen dann bis size-1.
Folgendes Coding ist nicht getestet, einfach so ins Blaue rein...

Code:
int16_t  CheckInputPatterns() {
   for( int16_t p = 0 ; p < NumPattern ; p++) {  
      for( int16_t i = 0 ; i < NumInput && Input[p][i]  == currIn[i]; i++);
      if(i== NumInput) return p;
   }
   return -1;
}

Vielleicht geht's auch noch kürzer, da bin ich mir aber nicht sicher.
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
07.05.2015, 17:09 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2015 17:09 von HaWe.)
Beitrag #3
RE: Problem mit Array-Muster-Vergleich
das sieht wirklich schlau aus, danke Smile

(tatsächlich gehen meine NN-arrays aber wirklich von 1 bis n+1, weil 0 immer als Leerstelle gesetzt ist^^
- aber es war ja auch nur als Beispiel gedacht Smile )
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.05.2015, 17:22
Beitrag #4
RE: Problem mit Array-Muster-Vergleich
(07.05.2015 17:09)HaWe schrieb:  (tatsächlich gehen meine NN-arrays aber wirklich von 1 bis n+1, weil 0 immer als Leerstelle gesetzt ist^^
Ich arbeite mit Uno, Nano, Tiny. Da ist man um jedes Byte geizig...

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
07.05.2015, 18:26 (Dieser Beitrag wurde zuletzt bearbeitet: 07.05.2015 18:28 von HaWe.)
Beitrag #5
RE: Problem mit Array-Muster-Vergleich
ja, kann ich verstehen, aber zum Einen fällt 1 Zelle von 100 weniger ins Gewicht als bei 1 von 10,
andererseits wollte ich es ursprünglich sogar auch selber bereits auf Null runter ändern .

Warum dann doch nicht, habe ich schon mal bei uns im Forum erklärt:

Zitat:die originale veröffentlichte BPN-Implementierung benutzt ein für C-Programmierer sehr ungewöhnliches Inkrement ab 1, nicht ab 0, wodurch alle Nuller-Array-Zellen verschwendet schienen. Zunächst wollte ich dies daher aus Speicherplatz-Gründen wieder auf die Nuller-Inkrementierung "re-sizen", entschied mich aber dann doch dagegen: denn jetzt hat man pro Array quasi 1 Array-Zelle als "statische Reserve", die nicht in die Backpropagation mit eingeht, die man aber z.B. als statisches "Erinnerungs-Neuron" verwenden kann, oder um es als zusätzliches statisches aktivierendes oder hemmendes oder sogar rückgekoppeltes Eingangs- oder Zwischen-Neuron zu verwenden, wie es teilw. bei rückgekoppelten Jordan- oder Elman-Netzen gemacht wird. Für künftige mögliche Erweiterungen habe ich es daher so gelassen wie in der Original-Implementierung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.05.2015, 13:18 (Dieser Beitrag wurde zuletzt bearbeitet: 09.05.2015 14:56 von HaWe.)
Beitrag #6
RE: Problem mit Array-Muster-Vergleich
Update:
Erkennung funktioniert jetzt perfekt!
Danke nochmal, Thorsten!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Problem mit Wire.available() abfrage avoid 1 154 11.01.2018 13:40
Letzter Beitrag: Tommy56
  SerialComInstruments 4 Problem Darstellung Nextero 35 972 15.12.2017 18:51
Letzter Beitrag: ElEspanol
  Problem mit Nema17 und A4988 Philthy 6 298 08.12.2017 12:35
Letzter Beitrag: Tommy56
  Arduino -> Controllino [Problem gelöst] Cyrilsneer 17 959 27.11.2017 18:49
Letzter Beitrag: Franz54
Question Problem beim seriellen Einlesen von RFID-Reader Bezel 5 427 05.11.2017 22:37
Letzter Beitrag: Tommy56
  String nach Byte Array in ASCII-Codierung nexus1212 7 597 05.11.2017 14:36
Letzter Beitrag: Tommy56
  char-Array nach int? torsten_156 8 677 04.11.2017 18:44
Letzter Beitrag: Tommy56
  3 Stück LED 8x8 Matrix via Array ansteuern Bino87 10 1.037 30.10.2017 19:33
Letzter Beitrag: Bino87
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 696 22.08.2017 15:17
Letzter Beitrag: Tommy56
  Problem mit LSM 303 Snörb 1 424 22.08.2017 14:16
Letzter Beitrag: Snörb

Gehe zu:


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