Example 2 

Construct a low-pass filter for dilation d=3, sum rule m=4 and vanishing moment n =3;
Then use matrix extension to derive its high-pass filter so that they form a filter bank with the perfect reconstruction property
and the corresponding tightframelet system having vanishing moment of order 3.
 

> read
 

> `assign`(d, 3); 1; `assign`(m, 4); 1; `assign`(n, 3); 1
 

 

 

3
4
3 (8.4.1)
 

> `assign`(poly, D1ComplexTight(d, m, n)); 1
 

`*`(`^`(`+`(`/`(1, 3), `*`(`/`(1, 3), `*`(z)), `*`(`/`(1, 3), `*`(`^`(z, 2)))), 4), `*`(`+`(`*`(`+`(`-`(`/`(4, 3)), `*`(`*`(`/`(2, 3), `*`(I)), `*`(`^`(5, `/`(1, 2))))), `*`(z)), `/`(11, 3), `-`(`*`(`... (8.4.2)
 

> `assign`(poly, Pb, az, D1ComplexTightOne(d, m)); 1
`assign`(poly, Pb, az, D1ComplexTightOne(d, m)); 1
 

 

 

`+`(`*`(`/`(8, 9), `*`(`^`(10, `/`(1, 2)), `*`(`+`(1, `-`(z)), `*`(`+`(`/`(1, 18), `-`(`*`(`/`(1, 36), `*`(z))), `-`(`/`(`*`(`/`(1, 36)), `*`(z)))))))))
`+`(`*`(`/`(8, 9), `*`(`^`(10, `/`(1, 2)), `*`(`+`(1, `-`(z)), `*`(`+`(`/`(1, 18), `-`(`*`(`/`(1, 36), `*`(z))), `-`(`/`(`*`(`/`(1, 36)), `*`(z))))))))), Matrix(%id = 187949672), Matrix(%id = 17195147...
`+`(`*`(`/`(8, 9), `*`(`^`(10, `/`(1, 2)), `*`(`+`(1, `-`(z)), `*`(`+`(`/`(1, 18), `-`(`*`(`/`(1, 36), `*`(z))), `-`(`/`(`*`(`/`(1, 36)), `*`(z))))))))), Matrix(%id = 187949672), Matrix(%id = 17195147...
`+`(`*`(`/`(8, 9), `*`(`^`(10, `/`(1, 2)), `*`(`+`(1, `-`(z)), `*`(`+`(`/`(1, 18), `-`(`*`(`/`(1, 36), `*`(z))), `-`(`/`(`*`(`/`(1, 36)), `*`(z))))))))), Matrix(%id = 187949672), Matrix(%id = 17195147...
`+`(`*`(`/`(8, 9), `*`(`^`(10, `/`(1, 2)), `*`(`+`(1, `-`(z)), `*`(`+`(`/`(1, 18), `-`(`*`(`/`(1, 36), `*`(z))), `-`(`/`(`*`(`/`(1, 36)), `*`(z))))))))), Matrix(%id = 187949672), Matrix(%id = 17195147...
`*`(`^`(`+`(`/`(1, 3), `*`(`/`(1, 3), `*`(z)), `*`(`/`(1, 3), `*`(`^`(z, 2)))), 4), `*`(`+`(`*`(`+`(`-`(`/`(4, 3)), `*`(`*`(`/`(2, 3), `*`(I)), `*`(`^`(5, `/`(1, 2))))), `*`(z)), `/`(11, 3), `-`(`*`(`...
`*`(`^`(`+`(`/`(1, 3), `*`(`/`(1, 3), `*`(z)), `*`(`/`(1, 3), `*`(`^`(z, 2)))), 4), `*`(`+`(`*`(`+`(`-`(`/`(4, 3)), `*`(`*`(`/`(2, 3), `*`(I)), `*`(`^`(5, `/`(1, 2))))), `*`(z)), `/`(11, 3), `-`(`*`(`...
`*`(`^`(`+`(`/`(1, 3), `*`(`/`(1, 3), `*`(z)), `*`(`/`(1, 3), `*`(`^`(z, 2)))), 4), `*`(`+`(`*`(`+`(`-`(`/`(4, 3)), `*`(`*`(`/`(2, 3), `*`(I)), `*`(`^`(5, `/`(1, 2))))), `*`(z)), `/`(11, 3), `-`(`*`(`...
`*`(`^`(`+`(`/`(1, 3), `*`(`/`(1, 3), `*`(z)), `*`(`/`(1, 3), `*`(`^`(z, 2)))), 4), `*`(`+`(`*`(`+`(`-`(`/`(4, 3)), `*`(`*`(`/`(2, 3), `*`(I)), `*`(`^`(5, `/`(1, 2))))), `*`(z)), `/`(11, 3), `-`(`*`(`...
`*`(`^`(`+`(`/`(1, 3), `*`(`/`(1, 3), `*`(z)), `*`(`/`(1, 3), `*`(`^`(z, 2)))), 4), `*`(`+`(`*`(`+`(`-`(`/`(4, 3)), `*`(`*`(`/`(2, 3), `*`(I)), `*`(`^`(5, `/`(1, 2))))), `*`(z)), `/`(11, 3), `-`(`*`(`...
(8.4.3)
 

> simplify(Typesetting:-delayDotProduct(Pb, subs({I = `+`(`-`(I)), z = `/`(1, `*`(z))}, Transpose(Pb)))); 1
 

Matrix(%id = 171952368) (8.4.4)
 

>
 

> read
 

> SYM(Pb); 1
 

Matrix(%id = 152625376)
Matrix(%id = 152625376)
(8.4.5)
 

> `assign`(U0, Matrix(4, 4, IdentityMatrix(4))); -1; `assign`(U0[[1, 3], [1, 3]], `+`(`*`(`/`(1, 2), `*`(sqrt(2), `*`(`<|>`(`<,>`(1, 1), `<,>`(1, -1))))))); -1; `assign`(U0, Typesetting:-delayDotProduct...
`assign`(U0, Matrix(4, 4, IdentityMatrix(4))); -1; `assign`(U0[[1, 3], [1, 3]], `+`(`*`(`/`(1, 2), `*`(sqrt(2), `*`(`<|>`(`<,>`(1, 1), `<,>`(1, -1))))))); -1; `assign`(U0, Typesetting:-delayDotProduct...
`assign`(U0, Matrix(4, 4, IdentityMatrix(4))); -1; `assign`(U0[[1, 3], [1, 3]], `+`(`*`(`/`(1, 2), `*`(sqrt(2), `*`(`<|>`(`<,>`(1, 1), `<,>`(1, -1))))))); -1; `assign`(U0, Typesetting:-delayDotProduct...
 

Matrix(%id = 198318236) (8.4.6)
 

> `assign`(Pc, collect(Typesetting:-delayDotProduct(Pb, U0), z)); -1; SYM(Typesetting:-delayDotProduct(Pb, U0)); 1
 

Matrix(%id = 198319836) (8.4.7)
 

> `assign`(tmp, D1SortSymPolyVec(Pc)); -1; `assign`(Pd, tmp[1]); -1; `assign`(U1, tmp[2]); -1
 

> SYM(Pd); 1
 

Matrix(%id = 168737712) (8.4.8)
 

> `assign`(tmp, D1MatOrthExtVec(Pd)); -1; nops(tmp); 1
`assign`(tmp, D1MatOrthExtVec(Pd)); -1; nops(tmp); 1
 

 

MSG: Old and New Support:
3 (8.4.9)
 

> simplify(Typesetting:-delayDotProduct(Typesetting:-delayDotProduct(Typesetting:-delayDotProduct(Pd, tmp[1]), tmp[2]), tmp[3])); 1
 

Matrix(%id = 171149660) (8.4.10)
 

> `assign`(U, collect(simplify(Typesetting:-delayDotProduct(Typesetting:-delayDotProduct(Typesetting:-delayDotProduct(Typesetting:-delayDotProduct(U0, U1), tmp[1]), tmp[2]), tmp[3])), z)); -1
 

> `assign`(Pe, subs({I = `+`(`-`(I)), z = `/`(1, `*`(z))}, Transpose(U))); -1
 

> simplify(`+`(Pe[1, 1 .. 4], `-`(Pb[1, 1 .. 4]))); 1
 

Vector[row](%id = 198000244) (8.4.11)
 

> `assign`(Pe1, Pe[1 .. 4, 1 .. 3]); -1
 

> `assign`(filters, D1Polyphase2Mask(Pe1, d, `/`(1, `*`(sqrt(d))))); -1
 

> simplify(`+`(filters[1, 1], `-`(poly))); 1
 

0 (8.4.12)
 

> D1Nu2Mask(poly, d, m); 1
 

1.947019365 (8.4.13)