1. A method comprising: selecting a plurality of storage cells based on a received read target address; reading a plurality of charge levels of a storage format word from the selected plurality of storage cells; generating elements of a results vector based on a weighted summation between a plurality of Walsh functions, each Walsh function weighted with a corresponding charge level, wherein each respective Walsh function represents a respective row of a Hadamard matrix, the respective row being (i) mutually orthogonal to all other rows of the Hadamard matrix and (ii) orthogonal to an all-one row of the Hadamard matrix; generating elements of a numerical vector based on a maximal likelihood interpretation of the elements of the results vector; and mapping the numerical vector to a set bits of a read data word.