Code covered by the BSD License
Peter Stobbe (view profile)
09 Sep 2011
C implementation of Hadamard transform
Watch this File
Usage: y = hadamardc(x)
x must be a REAL VALUED COLUMN VECTOR or MATRIX
m = size(x,1) must be a POWER OF TWO
In terms of default matlab functions, this is functionally equivalent to hadamard(size(x,1))*x or ifwht(x,,'hadamard'), but faster.
1) This implementation uses exactly m*log2(m) additions/subtractions.
2) This is symmetric and orthogonal. To invert, apply again and divide by vector length.