이산 부립엽 변환과 최소 2승법

하고 싶은 말


아무래도 최소 2승법의 식을 만들었다면 이산 부립엽 변환의 형식과 같다고 생각해서 총괄하고 싶습니다.
고등학교 수학만 쓰나?

정황


시간 함수 $y (t) 달러가 있다고 가정하십시오.이산 부립엽 변환을 하면
y(t) = \frac{1}{\sqrt{N}}\sum_{n = 0}^{N-1} c_n\exp\left(-\mathrm{i} \frac{2\pi nt}{N}\right)
그러나 이 전개 계수를 얻으려면
c_n = \frac{1}{\sqrt{N}}\sum_{t = 0}^{N-1} y(t)\exp\left(\mathrm{i} \frac{2\pi nt}{N}\right)
.이거 대열로 써주세요.
\left( \begin{matrix} c_0 \\ c_1 \\ \vdots \\ c_{N-1}\end{matrix}\right)
= \left( \begin{matrix} 
W^0 & W^0 & \cdots & W^0 \\
W^0 & W^{-1} &      & W^{-(N - 1)} \\
\vdots & & \ddots  & \vdots\\
W^0 & W^{-(N-1)} & \cdots & W^{-(N-1)(N-1)}
\end{matrix} \right)
\left( \begin{matrix} y(0) \\ y(1) \\ \vdots \\ y(N-1)\end{matrix}\right)
이렇게 써.여기는 $W=\exp\left(2\pi\mathrm{i]/N\right)$입니다. 괜찮겠습니까?

최소 2 곱셈으로 해석하다


시간 시퀀스 $y (t j) $를 가정합니다.
샘플링 시간 $tj$======================================================================j=j\Deltat 달러로 쓸 수 있습니다.또한 $M 포인트로 샘플링합니다.즉, $j=0,1,2\cdots,M-1달러입니다.
반면, 주파수 $\omegak$의 주기 함수가 있다고 가정하십시오.
$$
\psi_n(t) = c_n\exp\left(\mathrm{i}\omega_n t\right)
$$
$c_n = r_n\exp(i\phin)$는 복수이고 레이디얼 $r진폭n달러는 초기 상위에 해당한다.
이 주기 함수가 $N$개라고 가정하십시오.주파수도 등간격 $\omegak=k Delta\omega 달러의 값을 찾습니다.
시간 $t주의 사항
y(t_j) = \sum_n c_n\psi_n(t_j)
형식, 복수$c나는 n달러를 비슷하게 이동하고 싶다. 하기에 적합하다.
$$
\vec{X} =\left(c_0, c_1,\cdots, c_{N-1}\right)^\mathrm{T}
$$
벡터의 계수.
부가 글자 $n 달러에 대한 것과 벡터의 내적을 생각하면
$$
y(t_j) =\vec{\psi}(t_j)^T\vec{X}
$$
이렇게 하면 (앞으로의 일을 위해 $\psi와 $X(c)달러의 적립 순서를 바꿀 수 있습니다.)
여기, $\vec{psi}(tj)달러는 시간$tj$\psi 가격으로 정렬됩니다.
\vec{\psi}(t_j) = (\psi_0(t_j), \psi_1(t_j), \cdots, \psi_{N-1}(t_j))^\mathrm{T}
이거까지 세로로 하면...
$$
\vec{y} =\boldsymbol{A}\vec{X}
$$
하지만 여기
$$
\vec{y} =\left(y(t_0), y(t_1),\cdots, y(t_M)\right)^T
$$
벡터
\boldsymbol{A} =\left(\vec{\psi}(t_0), \vec{\psi}(t_1), \cdots, \vec{\psi}(t_{M-1})\right)
열의 행렬로 쓸 수 있다.특히 $N=M달러일 때는 방진이다.
이해가 쉬워질지 모르겠지만 $\vec{y}=\boldsymbol{A}\vec{X}달러를 구체적으로 적으면
\left( \begin{matrix}
y(t_0) \\ y(t_1) \\ y(t_2) \\ \vdots \\ y(t_{M-1})
\end{matrix} \right)
= 
\left( \begin{matrix} 
\exp(\mathrm{i}t_0\omega_0) & \exp(\mathrm{i}t_0\omega_1)  & 
\exp(\mathrm{i}t_0\omega_2) & \cdots & \exp(\mathrm{i}t_0\omega_{N-1})  \\
\exp(\mathrm{i}t_1\omega_0) & \exp(\mathrm{i}t_1\omega_1) &\exp(\mathrm{i}t_1\omega_2) & \cdots & \exp(\mathrm{i}t_1\omega_{N-1}) \\
\exp(\mathrm{i}t_2\omega_0) & \exp(\mathrm{i}t_2\omega_1) &\exp(\mathrm{i}t_2\omega_2) &  & \exp(\mathrm{i}t_2\omega_{N-1}) \\
\vdots &  & & \ddots  & \vdots\\
\exp(\mathrm{i}t_{M-1}\omega_0) & \exp(\mathrm{i}t_{M-1}\omega_1) &\exp(\mathrm{i}t_{M-1}\omega_2) & \cdots & \exp(\mathrm{i}t_{M-1}\omega_{N-1}) 
\end{matrix} \right)
\left( \begin{matrix}
c_0 \\ c_1 \\ c_2 \\ \vdots \\ c_{N-1}
\end{matrix} \right)
여기, $N=M, $e^{mathrm{i}\Delta\Delta\omega^2} = W 달러를 쓰면 $\exp(\mathrm{i}t jomegak)=\exp\left(\mathrm{i}jk\Delta\right)=W^{jk}달러
\boldsymbol{A} = \left( \begin{matrix} 
1 & 1 & 1& \cdots & 1 \\
1 & W & W^2 & \cdots & W^{(N-1)} \\
1 & W^2 & W^4 &      & W^{2(N-1)} \\
\vdots &  & & \ddots  & \vdots\\
1 & W^{(N - 1)} & W^{2(N-1)} & \cdots & W^{(N-1)^2}
\end{matrix} \right)

.지금 찾고 싶은 $\vec{X}달러는 $\boldsymbol {A}\vec{X}달러의 양쪽에서 $\boldsymbol {A}달러의 행렬로 반대로 배열되었다
$$
\vec{X} =\boldsymbol{A}^{-1}\vec{y}
$$
그러나 $\boldsymbol{A}^{-1}은 빠른 부립엽 변환 시 나타나는 행렬의 형상과 비슷합니다.
\boldsymbol{A}^{-1} = \frac{1}{N}\left( \begin{matrix} 
1 & 1 & 1& \cdots & 1 \\
1 & W^{-1} & W^{-2} & \cdots & W^{-(N-1)} \\
1 & W^{-2} & W^{-4} &      & W^{-2(N-1)} \\
\vdots &  & & \ddots  & \vdots\\
1 & W^{-(N - 1)} & W^{-2(N-1)} & \cdots & W^{-(N-1)^2}
\end{matrix} \right)
피곤해서 게으름을 피우지만 더 노력하면 DFT와 같잖아.
상응하는 조치만 취하면 DFT는 달러 W=\exp\left(2\pi\mathrm{i]/N\right)의 최소 2승법 $W=\exp\left(\mathrm{i}\Delta\Delta\right) 달러다.

추기


오차(또는 정적 분포를 가정할 때의 대수가 비슷하다)
L(\vec{x}) = \left(\vec{y} - \boldsymbol{A}\vec{x}\right)^\mathrm{T}\cdot\left(\vec{y} - \boldsymbol{A}\vec{x}\right)
최소 곱셈
\vec{x} = (\boldsymbol{A}^\mathrm{T}\boldsymbol{A})^{-1}\boldsymbol{A}^\mathrm{T}\vec{y}
하지만 $M=N$,\Delta\Delta=2\pi/N달러의 조건하에서 $$$\boldsymbal은 {A} ^^mathrm{T} =\boldta\Delta=2\pi/N 달러의 경우 $\boldsymbal{A} {{{{{ssin(t)\} 달러가 정교기초계라면 $\boldsymbber{A} {matherm {T]\boldsymbobl{{A} {A} {{{A=2\\\2\pi/2\pi/2\pi/N달러의 경우 $\boldsymbsymbsymbe{I} $$$$Bboldsyboldsyboldsymbabab}{N}\boldsymbol{A}달러
$$
\vec{X} =\boldsymbol{A}^{-1}\vec{y}
$$
진정할 수 있을 것 같아서요.


약간python으로 확인해 보세요.f는 길이nlen의 실수 배열(1차원 numby 배열)이다.
우선 일반적인 부립엽 변환이지만 결과를 실수로 바꾸기 위해 이산여현 변환을 사용한다.
from scipy import fftpack
def DCT(f):
    return fftpack.dct(f)
다음은 코스의 합계가 몸에 맞는 방법으로 계산한다.
import numpy as np
def lsq(f):
    nlen = len(f)
    dw = np.pi/nlen
    w = np.arange(nlen)*dw
    t = np.arange(nlen)
    phi = np.tile(w, (nlen, 1))*(t.reshape(nlen, 1))
    X = np.cos(phi)
    g = np.linalg.solve(X, f)
    return g*nlen
데이터를 제작하다.평범한 진동에 고스를 가볍게 걸어라.
    nlen = 1000
    x = np.arange(nlen)
    f = np.cos(x/10)*np.exp( - (x)**2/(nlen/2)**2)

    import matplotlib.pyplot as plt
    plt.plot(x, f)
    plt.show()

두 가지 방법으로 부립엽 변환을 하고 그림을 그립니다.
    g_lsq = lsq(f)
    g_dct = DCT(f)

    plt.plot(x, g_dct)
    plt.plot(x, g_lsq)
    plt.show()

최고치를 확대하다.

미세한 부분은 편차가 있지만 봉의 위치와 높이, 너비가 일치하기 때문에 좋다.

총결산


삼각함수의 화(和)로 적당한 함수를 쓸 때 삼각함수를 기함수계로 사용하면 이산부립엽 변환이 되고, 함수의 의합이라고 생각하면 최소제곱법이지만, 최소제곱법의 조건을 정리하면 부립엽 변환과 같은 모양이 된다.

좋은 웹페이지 즐겨찾기