Re: Hadamard -Sylvester Matrix Self-Similarity by substitution and reparatitioning
- To: mathgroup at smc.vnet.net
- Subject: [mg68641] Re: Hadamard -Sylvester Matrix Self-Similarity by substitution and reparatitioning
- From: Roger Bagula <rlbagula at sbcglobal.net>
- Date: Mon, 14 Aug 2006 06:44:13 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
> Roger Bagula wrote: A long time back I ran across this in an > electrical engineering magazine. > With the right starting matric Haramard -Silvester Matrix > self-Similaroty gives a Pascal's triangle like result. > I just this morning figured out how to repartition the matrices to > give usable arrasys! > (* Fibonacci Matrix for Matrix Markov: 2by2*) > t[n_, m_] := If[ n == m == 1, 0, 1] > (* substitution step*) > a = Table[t[n, m]*t[i, j], {n, 1, 2}, {m, 1, 2}, {i, 1, 2}, {j, 1, 2}]; > (* first level Hadamard -Sylvester Matrix self-Similarity > repartitution: 4by4*) > M = Flatten[Table[{Flatten[Table[a[[ > n, m]][[1, i]], {n, > 1, 2}, {i, 1, 2}]], Flatten[Table[a[[n, m]][[2, > i]], {n, 1, 2}, {i, 1, 2}]]}, {m, 1, 2}], 1] > aa = Table[M[[n, m]]*M[[i, j]], {n, 1, 4}, {m, 1, 4}, {i, 1, 4}, {j, > 1, 4}]; > (* second level Hadamard -Sylvester Matrix self-Similarity > repartitution: 16 by16*) > M2 = Flatten[Table[{Flatten[Table[aa[[ > n, m]][[1, i]], {n, > 1, 4}, {i, 1, 4}]], Flatten[Table[aa[[n, m]][[2, > i]], {n, 1, 4}, {i, 1, 4}]], Flatten[Table[aa[[ > n, m]][[3, i]], {n, > 1, 4}, {i, 1, 4}]], Flatten[Table[aa[[ > n, m]][[4, i]], {n, > 1, 4}, {i, 1, 4}]]}, {m, 1, 4}], 1] > > {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, > {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1}, > {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, > {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1}, > { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, > {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1}, > {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1}, > {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, > { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, > {0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1}, > {0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1}, > {0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1}, > {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1}, > {0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1}, > { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}. > {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}} This method gives the same 16by16 with reversed order on the anti-diagonal: b[i_, k_] := Floor[Mod[i/2^k, 2]] n = 15 Table[If[Sum[b[i, k]*b[j, k], {k, 0, n}] == 0, 1, 0], {j, 0, 15}, {i, 0, 15}] {{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}, {1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0}, {1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0}, { 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}