Forum: Mikrocontroller und Digitale Elektronik 2D-BoolMatrix mit 2 Variablen beschreiben


von Karl (Gast)


Lesenswert?

Hallo zusammen,

wie es der Betreff schon verrät, habe ich mehrere 16x16 Bool-Matrizen 
oder besser 3D-Arrays, die sich ändern können und wo ich mir jedes Mal 
den Inhalt merken muss. Es handelt sich um Crosspoint-Matrizen...

Nun möchte ich mir aus Speichergründen diese Matrizen mit weniger 
Variablen bzw. Speicherplatz auf Kosten von Rechenpower "merken" können.

Ich stelle mit vor, dass ein 16x16 bool-Array auch irgendwie mit zb 
2x16bit uint Variablen voll darstellbar sind? Liege ich da richtig, oder 
ist das nicht möglich und ich müsste mir jede 16x16 Matrix als 2D-Array 
ablegen, um den Inhalt der Matrizen wieder voll rekonstruieren zu 
können?

Ich glaube mein Problem ist eher ein "mathematisches" :-)

Besten Dank im Voraus
Karl

von Karl (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

kurz nochmal um zu verdeutlichen, was ich genau meine...

Die roten "dots" sind Verbindungen. Ax Bx Cx A B C sind Signale bzw. 
Empfänger.

Danke und viele Grüße
Karl

von sid (Gast)


Lesenswert?

Karl schrieb:
> Ich stelle mit vor, dass ein 16x16 bool-Array auch irgendwie mit zb
> 2x16bit uint Variablen voll darstellbar sind?

wie soll das denn gehen?
16x16 sind 256 bit an boolean information
wie willst Du die in 32bit (2x16bit uint) packen ohne infos zu 
verlieren?

Karl schrieb:
> Betreff: 2D-BoolMatrix mit 2 Variablen beschreiben
>
> wie es der Betreff schon verrät, habe ich mehrere 16x16 Bool-Matrizen
> oder besser 3D-Arrays,

Was denn nu? 16x16 oder 16x16x16?
letzteres sind immerhin 4096 bit nicht nur 256.

Sei mir nicht böse, aber irgendwie hast Du Dich entweder
schlecht ausgedrückt oder stehst was die Anzahl der bits angeht grad auf 
dem Schlauch ;)

von Poll (Gast)


Lesenswert?

Du hast 256 Bits. D. h. die Darstellung aller "dots" benötigt 32 Bytes.

Jede Reihe (z. B. Ax) besteht aus 2 Bytes

von Poll (Gast)


Lesenswert?

... a 16 Bits.

von sid (Gast)


Lesenswert?

Karl schrieb:
> kurz nochmal um zu verdeutlichen, was ich genau meine...

naja verdeutlichen tut das NIX...
aber okay

Spalte A 100
Spalte B 111
Spalte C 010

neun bit ... keine chance das mit weniger als 9bit
zweifelsfrei darzustellen

und bei 16x16 ist es dasselbe 16x16 bleiben 256 bit
mit 32bit hast Du nur ein achtel der Informationen

von Karl (Gast)


Lesenswert?

Hi,

besten Dank für die Anregungen und Gedankenstöße.

@Sid: Beides, ich stand auf dem Schlauch und habe mich zudem nicht ganz 
glücklich ausgedrückt. Aber nun wird alles klarer...

32Byte ist korrekt und verstanden, danke :-)

Wie würde eine Rechen/Logikoperation aussehen, um eine bestehende Matrix 
Mathematisch auszudrücken, bzw. um die Matrix aus den 32bytes zu 
rekonstruieren?

Danke und VG

von sid (Gast)


Lesenswert?

naja Du kannst eine uint als bitset benutzen und umgekehrt

Was genau ist Denn Dein Ziel?
"mathematisch" ausdrücken kann vieles heissen

von Poll (Gast)


Lesenswert?

Karl schrieb:

> Wie würde eine Rechen/Logikoperation aussehen, um eine bestehende Matrix
> Mathematisch auszudrücken, bzw. um die Matrix aus den 32bytes zu
> rekonstruieren?

Geht es ein klein wenig konkreter? Die 32 Bytes repräsentieren bereits 
die Matrix. Welche Operationen möchtest du ausführen? Was verstehst du 
unter rekonstruieren?

von Rolf M. (rmagnus)


Lesenswert?

Ich vermute, er will wissen, wie er mit einem Zeilen- und einem 
Spaltenindex jetzt an das entsprechende Matrix-Element kommt.
Das hängt letztendlich von der Sprache ab. Man könnte aber z.B. als 
Array aus 16 Integer mit jeweils 16 Bit abspeichern. Dann kannst du den 
Zeilenindex direkt als Index für das Array nutzen und den Spaltenindex 
verwenden, um das passende Bit zu maskieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.