曲线平滑
曲线平滑
1.曲线平滑步骤
第一步:创建频率域加权系数数组
\[{\rm{Gamma(i) = }}\frac{1}{{1 + par{{\left( {2 - 2\cos \frac{{i \cdot PI}}{N}} \right)}^2}}}
\]
其中\(par\)为平滑算法的平滑参数,\(par\)越大,平滑成都越狠,\(N\)为待平滑数组的总点数。
第二步:对待平滑数组\(X\)进行余弦正变换,转换到频率域,得到\(Xout\)
第三步:在频率域进行能量调整 \(xTemp(i)=Gamma(i)*Xout(i)\)
第四步:对调整后的频率域\(xTemp\)进行反余弦变换,得到平滑后的频率域一维数组。
2.一维余弦变换
2.1 傅里叶变换与反变换的公式为
\[F(u) = c\sum\limits_{n = 0}^{N - 1} f (n){e^{ - j\frac{{2\pi un}}{N}}},u = 0,1, \cdots ,N - 1
\]
\[f(n) = d\sum\limits_{u = 0}^{N - 1} F (u){e^{j\frac{{2\pi un}}{N}}},n = 0,1, \cdots ,N - 1
\]
2.2 DCT公式推导
基于公式
\[F(u) = c\sum\limits_{n = 0}^{N - 1} f (n){e^{ - j\frac{{2\pi un}}{N}}},u = 0,1, \cdots ,N - 1
\]
令
\[f(n) = g(n){e^{ - j\frac{{p\pi u}}{{qN}}}},p,q \ne 0
\]
其中\(g(n)\)通过个数为\(tN\left( {t \in {Z_{\ge 1}}} \right)\)的一个空间域(时域)实数采样序列:
\[g(0),g(1), \cdots ,g(N - 1),g(N), \cdots ,g(tN - 1),\forall n,g(n) \in R
\]
且当\(t>1\)时,\(\forall n \in \left\{ {N,N + 1, \cdots ,tN - 1} \right\}\),\(g(n)=0\),即在拥有前\(N\)个采样点的基础上新增\((t-1)N\)个零采样点,则有:
\[\begin{array}{l}
F(u) = c\sum\limits_{n = 0}^{tN - 1} {\left[ {\left( {g(n){e^{ - j\frac{{p\pi u}}{{qN}}}}} \right) \cdot {e^{ - j\frac{{2\pi un}}{{tN}}}}} \right]} \$ \$ \\
= c\sum\limits_{n = 0}^{tN - 1} {\left[ {g(n) \cdot \left( {{e^{ - j\frac{{p\pi u}}{{qN}}}} \cdot {e^{ - j\frac{{2\pi un}}{{tN}}}}} \right)} \right]} \\
= c\sum\limits_{n = 0}^{tN - 1} g (n){e^{ - j\frac{{(pt + 2nq)u\pi }}{{qtN}}}}\$ \$ \\
= c\sum\limits_{n = 0}^{tN - 1} g (n)\left( {\cos \frac{{(pt + 2nq)u\pi }}{{qtN}} - i\sin \frac{{(pt + 2nq)u\pi }}{{qtN}}} \right)\$ \$ \\
= c\sum\limits_{n = 0}^{N - 1} g (n)\left( {\cos \frac{{(pt + 2nq)u\pi }}{{qtN}} - i\sin \frac{{(pt + 2nq)u\pi }}{{qtN}}} \right)
\end{array}
\]
对\(F(u)\)取实部,得到计算\(C(u)\)的DCT公式
\[C(u)=\operatorname{Re}(F(u))=c \sum_{n=0}^{N-1} g(n) \cos \frac{(p t+2 n q) u \pi}{q t N}, u=0,1, \cdots, N-1
\]
在DCT公式一般形式中,令
\[p=1, q=t=2
\]
则有
\[C(u)=c \sum_{n=0}^{N-1} g(n) \cos \frac{(2+2 \times n \times 2) u \pi}{4 N}\\
=c \sum_{n=0}^{N-1} g(n) \cos \frac{(2 n+1) u \pi}{2 N}, u=0,1, \cdots, N-1
\]
2.3IDCT公式推导
基于公式
\[f(n)=d \sum_{u=0}^{N-1} F(u) e^{j \frac{2 \pi n u}{N}}, n=0,1, \cdots, N-1
\]
令
\[F(u)=C(u) e^{j \frac{p \pi u}{q N}}
\]
其中\(C(u)\)通过个数为\(tN\left( {t \in {Z_{\ge 1}}} \right)\)的一个频率域实数离散序列:
\[C(0), C(1), \cdots, C(N-1), C(N), \cdots, C(t N-1), \forall u, C(u) \in \mathbb{R}
\]
且当\(t>1\)时,\(\forall u \in\{N, N+1, \cdots, t N-1\}\),\(C(u)=0\),相当于在拥有前N个离散点的基础上新增\((t-1)N\)个无效零函数点,则有:
\[f(n)=d \sum_{u=0}^{t N-1}\left[\left(C(u) e^{j \frac{p \pi u}{q N}}\right) \cdot e^{j \frac{2 \pi n u}{t N}}\right]\\
=d \sum_{u=0}^{t N-1}\left[C(u) \cdot\left(e^{j \frac{p \pi u}{q N}} \cdot e^{j \frac{2 \pi n u}{t N N}}\right)\right]\\
=d \sum_{u=0}^{t N-1} C(u) e^{j \frac{(p t+2 n g) u \pi}{q t N}}\\
=d \sum_{u=0}^{t N-1} C(u)\left(\cos \frac{(p t+2 n q) u \pi}{q t N}-i \sin \frac{(p t+2 n q) u \pi}{q t N}\right)\\
=d \sum_{u=0}^{N-1} C(u)\left(\cos \frac{(p t+2 n q) u \pi}{q t N}-i \sin \frac{(p t+2 n q) u \pi}{q t N}\right)
\]
对\(f(n)\)取实部,得到计算\(g(n)\)的IDCT公式
\[g(n)=\operatorname{Re}(f(n))=d \sum_{u=0}^{N-1} C(u) \cos \frac{(p t+2 n q) u \pi}{q t N}, n=0,1, \cdots, N-1
\]
在IDCT公式一般形式中,令
\[p=1,q=t=2
\]
则有
\[g(n)=d \sum_{u=0}^{N-1} C(u) \cos \frac{(1 \times 2+2 \times n \times 2) u \pi}{2 \times 2 \times N}\\
=d \sum_{u=0}^{N-1} C(u) \cos \frac{(2 n+1) u \pi}{2 N}, n=0,1, \cdots, N-1
\]