'Rotates the input array `x` with a fixed rotation matrix
(``self.dicMatrices[\'str(len(x))\']``)'

def __call__(self, x, inverse=False):

    N = x.shape[0]
    if (str(N) not in self.dicMatrices):
        B = np.random.randn(N, N)
        for i in xrange(N):
            for j in xrange(0, i):
                B[i] -= (np.dot(B[i], B[j]) * B[j])
            B[i] /= (sum((B[i] ** 2)) ** 0.5)
        self.dicMatrices[str(N)] = B
    if inverse:
        return np.dot(self.dicMatrices[str(N)].T, x)
    else:
        return np.dot(self.dicMatrices[str(N)], x)
