当前位置 博文首页 > leslie lee的博客(python ansys):DFT理论

    leslie lee的博客(python ansys):DFT理论

    作者:[db:作者] 时间:2021-06-25 12:15

    线性系统的性质

    输入x(n),输出y(n)
    齐次性:输入k*x(n),输出k*y(n)
    可加性:输入x1(n),输出y1(n),输入x2(n),输出y2(n),则输入x1(n)+x2(n),输出y1(n)+y2(n)
    位移不变性:输入x(n+s),输出y(n+s)
    静态线性:输入为常数,输出为常数,记录多组输入与输出后,拟合出一条直线
    正弦保真性:输入A_1 sin(wt+\phi_1),输出A_2 sin(wt+\phi_2)

    信号进行傅里叶变换FT时对应的名称

    非周期、连续 信号:傅里叶变换FT
    周期、连续 信号:傅里叶级数FS
    非周期、离散?信号:离散时间傅里叶变换DTFT
    周期、离散:离散傅里叶变换DFT,也称离散傅里叶级数DFS


    上图为四种信号
    非周期信号要用无穷个正弦曲线来合成,周期信号可以用有限个正弦曲线来合成。
    连续信号要用连续的正弦曲线来合成,离散信号要用离散的正弦曲线来合成。
    连续、无穷计算机都无法处理,所以计算机只能实现DFT。

    实数DFT,N点的输入信号变成N/2+1点的输出信号
    复数DFT,N点的输入信号变成N点的输出信号

    DFT公式

    正变换?
    X_k = \sum_{n=0}^{N-1}x_n e^{\frac{-j2 \pi kn}{N}}, k=0,1,...,N-1
    X_k = \sum_{n=0}^{N-1} (x_n cos{\frac{2 \pi kn}{N}} - x_n j sin{\frac{2 \pi kn}{N}})??
    逆变换
    x_n = \frac{1}{N} \sum_{k=0}^{N-1} X_k e^{\frac{j2 \pi kn}{N}} , n=0,1,...,N-1
    x_n = \frac{1}{N} \sum_{k=0}^{N-1} (X_k cos{\frac{2 \pi kn}{N}} + X_k j sin{\frac{2 \pi kn}{N}})

    输入与输出
    x_n = x_{rn} + x_{in}j, X_k = X_{rk} + X_{ik}j,如果输入序列为实数,x_n = x_{rn}

    推导X_{N-k}X_k的关系

    X_{N-k} = \sum_{n=0}^{N-1} x_n e^{\frac{-j2 \pi (N-k) n}{N}} = \sum_{n=0}^{N-1} x_n e^{-j2 \pi n + j2 \pi \frac{kn}{N}} = \sum_{n=0}^{N-1}x_n e^{ j2 \pi \frac{kn}{N}}?


    \sum_{n=0}^{N-1}x_n e^{ j2 \pi \frac{kn}{N}} = \sum_{n=0}^{N-1}(x_{rn} + x_{in}j) (cos(2 \pi \frac{kn}{N}) + j sin(2 \pi \frac{kn}{N} )) = \sum_{n=0}^{N-1}(x_{rn}cos(2 \pi \frac{kn}{N}) - x_{in}sin(2 \pi \frac{kn}{N}) ) +\sum_{n=0}^{N-1} j(x_{rn}sin(2 \pi \frac{kn}{N}) + x_{in}cos(2 \pi \frac{kn}{N}))?


    X_{N-k} = X_{r(N-k)} + j X_{i(N-k)} = \sum_{n=0}^{N-1}(x_{rn}cos(2 \pi \frac{kn}{N}) - x_{in}sin(2 \pi \frac{kn}{N}) ) +j \sum_{n=0}^{N-1} (x_{rn}sin(2 \pi \frac{kn}{N}) + x_{in}cos(2 \pi \frac{kn}{N}))?


    X_k = \sum_{n=0}^{N-1}x_n e^{\frac{-j2 \pi kn}{N}} = \sum_{n=0}^{N-1} (x_{rn} + j x_{in})(cos(2 \pi \frac{kn}{N}) - jsin(2 \pi \frac{kn}{N})) = \sum_{n=0}^{N-1}(x_{rn}cos(2 \pi \frac{kn}{N}) + x_{in}sin(2 \pi \frac{kn}{N}) ) +j \sum_{n=0}^{N-1} (x_{in}cos(2 \pi \frac{kn}{N}) - x_{rn}sin(2 \pi \frac{kn}{N}))

    可以看出根本推不出啥关系,但如果输入为实数序列(本文从此处开始一直说的是实数序列)
    X_{N-k} = X_{r(N-k)} + j X_{i(N-k)} = \sum_{n=0}^{N-1}x_{rn}cos(2 \pi \frac{kn}{N}) +j \sum_{n=0}^{N-1} x_{rn}sin(2 \pi \frac{kn}{N})
    X_k = \sum_{n=0}^{N-1}x_n e^{\frac{-j2 \pi kn}{N}} = \sum_{n=0}^{N-1}x_{rn}cos(2 \pi \frac{kn}{N}) + j \sum_{n=0}^{N-1} - x_{rn}sin(2 \pi \frac{kn}{N})
    此时就会推出X_{N-k} = X^*_k

    由此可见输入为实数序列与输入为复数序列稍微有些差别,实数序列的结果是重复的。

    举个例子
    输入:实数序列 x(n) = [x_0,x_1,x_2,x_3,x_4,x_5]
    输出:复数序列 X(k) = [X_0,X_1,X_2,X_3,X_4,X_5], N=6
    根据推导出的公式得出?X(k) = [X_0, X_1,X_2,X_3,X^*_2,X^*_1]
    我们只会要X(k) = [X_0, X_1,X_2,X_3]

    再举个例子
    输入:实数序列 x(n) = [x_0,x_1,x_2,x_3,x_4,x_5,x_6]
    输出:复数序列 X(k) = [X_0,X_1,X_2,X_3,X_4,X_5,X_6], N=7
    根据推导出的公式得出?X(k) = [X_0, X_1,X_2,X_3,X^*_3,X^*_2,X^*_1]
    我们只会要X(k) = [X_0, X_1,X_2,X_3]

    绘制幅值谱时,不去掉重复的那些,绘制出来的就是对称的。
    根据举的例子可看出N个元素的序列,我们最终保留下[X_0,X_1,...X_{[N/2]}],[ ]为取整符号

    这也就是为什么写逆变换公式时,有的写至N-1,有的写至[N/2](有的写作N/2,省略了取整的说明),这都是可以的
    x_n = \frac{1}{N} \sum_{k=0}^{N-1} X_k e^{\frac{j2 \pi kn}{N}} , n=0,1,...,N-1
    x_n = \frac{1}{[N/2]+1} \sum_{k=0}^{[N/2]} X_k e^{\frac{j2 \pi kn}{N}} , n=0,1,...,[N/2]

    将公式继续展开
    x_n = \frac{1}{[N/2]+1} \sum_{k=0}^{[N/2]} X_k e^{\frac{j2 \pi kn}{N}} = \frac{1}{[N/2]+1} \sum_{k=0}^{[N/2]} (X_{rk} + jX_{ik}) (cos(\frac{2 \pi kn}{N}) + jsin(\frac{2 \pi kn}{N})) = \frac{1}{[N/2]+1} \sum_{k=0}^{[N/2]} (X_{rk}cos(\frac{2 \pi kn}{N}) - X_{ik}sin(\frac{2 \pi kn}{N})) + \frac{1}{[N/2]+1} \sum_{k=0}^{[N/2]} j (X_{ik}cos(\frac{2 \pi kn}{N}) +X_{rk}sin(\frac{2 \pi kn}{N}))
    总所周知,Asinx+Bsinx这种形式可以合成为一个Csin(x+Φ),上面的形式为Acos-Bsin与Bcos+Asin
    Acos(\theta) - Bsin(\theta) = \sqrt{A^2+B^2}sin(arctan(A/B) - \theta) = - \sqrt{A^2+B^2}sin(\theta - arctan(A/B))
    Bcos(\theta) + Asin(\theta) = \sqrt{A^2+B^2}cos(arctan(A/B) - \theta) =\sqrt{A^2+B^2}cos(\theta - arctan(A/B))
    所以x_n可写作
    x_n = \frac{1}{[N/2]+1} \sum_{k=0}^{[N/2]} -|X_k|sin(\frac{2 \pi kn}{N} - arctan(\frac{X_{rk}}{X_{ik}})) + \frac{1}{[N/2]+1} j \sum_{k=0}^{[N/2]} |X_k|cos(\frac{2 \pi kn}{N} - arctan(\frac{X_{rk}}{X_{ik}}))?
    因此输入序列的每个点x_n,都可看作[N/2] + 1个余弦与[N/2] + 1正弦上对应一点的的合成
    2 \pi kn/N对应wt = 2 \pi f t
    可以认为f=k, t=n/N
    输入序列x_n也就可以看作[N/2] + 1个余弦与[N/2] + 1正弦的的合成

    附一张我们常见的图,出自http://dspguide.com/ch8.html


    说的就是一个16点的实数序列是9个正弦与9个余弦的合成

    16点的实数序列是8个正弦或8个余弦的叠加,这样的想法也对,接下来我继续推导
    x_n = \frac{1}{N} \sum_{k=0}^{N-1} X_k e^{\frac{j2 \pi kn}{N}} , n=0,1,...,N-1
    X_{N-k} = X^*_k
    X_k e^{\frac{j2\pi n}{N/k}} + X_{N-k} e^{\frac{j2\pi n}{N/(N-k)}} = A_k cos(\frac{2kn \pi}{N} + \phi_k)?
    如果N为偶数
    x_n = (X_0 + X_{\frac{N}{2}} e^{j \pi n})/N + \frac{1}{N} \sum_{k=1}^{\frac{N}{2} -1} A_k cos(\frac{2kn \pi}{N} + \phi_k)
    x_n可看作两个直流与N/2-1个简谐的叠加(此时N/2=[N/2]),可看作[N/2]+1个简谐(直流看作简谐的特殊情况)
    如果N为奇数
    x_n = X_0/N + \frac{1}{N} \sum_{k=1}^{[N/2]} A_k cos(\frac{2kn \pi}{N} + \phi_k)
    x_n可看作一个直流与[N/2]个简谐的叠加,可看作[N/2]+1个简谐
    因此16点的实数序列是8个正弦或8个余弦的叠加,这里推到的是8个余弦的叠加,也可推到为8个正弦的叠加
    X_k e^{\frac{j2\pi n}{N/k}} + X_{N-k} e^{\frac{j2\pi n}{N/(N-k)}} = A_k cos(\frac{2kn \pi}{N} + \phi_k)

    参考:https://zhuanlan.zhihu.com/p/71582795

    下一篇:没有了