Zero Suppression (ZS) , packing of sparse matrices

 Several methods can be used to pack sparse array of ADC values after ZS is applied.

Table below compares total size of a block of 38,000 channels of 10-bit ADCs (taken as example) 

'ZS fraction' is chosen strength of ZS.

Methods:

  • A plain storage of all channels
  • B pairs { address, value} packed to 4-bytes words, using 26 out of 32 bits
  • C as B, except densely packed to use all bits
  • D Yale algo for encoding sparse matrices : http://en.wikipedia.org/wiki/Sparse_matrix
    I assumed 2D=64x600 representation of channel location, nX=64 and uses 6 high bits of the 'value' using only 16 bits total. This combines 'A'+'JA' in to single ushort. 'IA' is stored in full ushort per value.
  • E as D except only 10 bits are used for 'IA' elements

Benefit of 'E' over all other methods:

  • compression is equally good as for simpler method B or C
  • the same algo can be used for not ZS data w/o factor 2 overhead