mirror of
https://github.com/lleene/hugo-site.git
synced 2025-04-21 06:03:21 +02:00
Compare commits
2 Commits
ad5454fe5f
...
82e5b5f80a
Author | SHA1 | Date | |
---|---|---|---|
82e5b5f80a | |||
59d13d46d1 |
@ -47,7 +47,19 @@ to transmit amplitude modulated symbols. As we will see the approach of using
|
||||
generator functions will allow us to synthesize high-precision waveforms with
|
||||
exact frequency characteristics with just a few predetermined coefficients.
|
||||
|
||||
## Initial Conditions
|
||||
At first glance, we can reason that many of the desirable properties that one would
|
||||
like to see here are similar to that of window functions (e.g. Hanning or
|
||||
Kaiser Windows)[^1]. This is because we are interested in both the time and
|
||||
frequency properties of the generated sequence simultaneously. The key
|
||||
difference here however is that we are constrained to polynomial dynamics.
|
||||
As a result the text-book approach for approximating a sum of weighted cosines
|
||||
may not be the best approach. Although taking a padé-approximant, using a
|
||||
rational polynomial basis, may be a good choice in some cases. More generally
|
||||
nesting or convolving our polynomial basis will result in higher oder
|
||||
polynomal. In order to realize a transcendental response we would need to
|
||||
revisit the feedback coefficient for each integrator.
|
||||
|
||||
## Determining Initial Conditions
|
||||
|
||||
There are a few ways to go about defining a polynomial \\(P(x)\\). Either in terms of
|
||||
the roots or in terms of the characteristic equation. Both are useful,
|
||||
@ -104,6 +116,7 @@ def mapping_coefficients(order: int) -> np.array:
|
||||
# for each element calculate new coefficient
|
||||
# Based on expanding d/dx * P(x) * (x+1)
|
||||
coef[elem + 1] = (order - elem - 1) * (base[elem] + base[elem + 1])
|
||||
# m_n will always be n!
|
||||
coef[0] = base[0] * order
|
||||
return coef
|
||||
|
||||
@ -124,11 +137,55 @@ def initial_condition(self, poly_coef: np.array) -> np.array:
|
||||
|
||||
```
|
||||
|
||||
It is worthwhile to point out that not all polynomial functions can be realized
|
||||
with this method. While not all zeros in \\( P(x) \\) have to be real, we do
|
||||
require the characteristic coefficients \\( a_n \\) and thereby \\( c_n \\) to
|
||||
to be real numbers.
|
||||
|
||||
## Frequency Response
|
||||
|
||||
Here we will consider polynomials of even orders with real roots such
|
||||
Here we will consider a simplified scenario to exemplify the frequency \
|
||||
characteristics for generated polynomials.
|
||||
Specifically polynomials of even orders with real roots such
|
||||
that we can decompose the polynomial \\(P(x)\\) as a product of several
|
||||
elements in the form of \\( (x+p_1)(x+p_2) \\). We can show that the
|
||||
fourier-transform of of this element is in the form of \\( 16d^2 sinc(d ω)^4 \\)
|
||||
where \\( d = (p_1 - p_2) \\).
|
||||
fourier-transform of of this element is in the form of \\( sinc(d ω)^2 \\)
|
||||
where \\( d = (p_1 - p_2)/2 \\) such that we can derive relations for the
|
||||
polynomial \\( P(x) = d^2-x^2 \\) and scale them accordingly.
|
||||
|
||||
$$
|
||||
\hat{P}(x) = \int^{d/2}_{d/2} (d^2-x^2) cos(k x) dx
|
||||
\quad = \quad
|
||||
\frac{8 \sin{ (d k) }}{k^3} - \frac{8 d \cos{ (d k ) }}{k^2}
|
||||
$$
|
||||
|
||||
We can numerically solve for some of the filter properties of interest and
|
||||
compare to other simple windows. There is little suprise in the table below
|
||||
as the roll-off and rejection is closely related to the 3dB bandwidth.
|
||||
Here we see that the frequency response of P(x) is somewhere inbetween a
|
||||
rectangular window and that of the raise-cosine or Hann window.
|
||||
|
||||
| Property | 2nd Order Poly len(2d) | Rectangle len(2d) | Hann len(2d) |
|
||||
|---------------|------------------------|-----------------------|-----------------------|
|
||||
| DC Value | \\(\frac{2d^3}{3}\\) | \\(2d^2\\) | \\(2d^2\\) |
|
||||
| 3db Bandwidth | \\(\sim 2.498/d\\) | \\(\sim 1.895/d\\) | \\(\sim 3.168/d\\) |
|
||||
| 1st Null | \\(\sim 4.5/d\\) | \\(\frac{\pi}{d}\\) | \\(\frac{2\pi}{d}\\) |
|
||||
| Roll Off | 40 dB / decade | 20 dB / decade | 60 dB / decade |
|
||||
|
||||
For completeness we also include the analytical expression for the Hann window
|
||||
frourier transform.
|
||||
|
||||
$$
|
||||
\hat{H}(x) = \int^{d/2}_{d/2} (1+cos(\frac{2\pi x}{d})) cos(k x) dx
|
||||
\quad = \quad
|
||||
\frac{2 \pi^2 sin(d k)}{k(d^2 k^2-\pi^2)}
|
||||
$$
|
||||
|
||||
|
||||
|
||||
|
||||
## References:
|
||||
|
||||
[^1]: A. Nuttall, ''Some windows with very good sidelobe behavior,'' IEEE
|
||||
Trans. Acoust., Speech, Signal Process. , vol. 29, no. 1, pp. 84-91, February
|
||||
1981 [Online]: http://dx.doi.org/10.1109/TASSP.1981.1163506.
|
||||
|
Loading…
x
Reference in New Issue
Block a user