• [傅里叶变换及其应用学习笔记] 十九. 采样定理在音乐上的应用


    采样定理在音乐上的应用

    人可以听到20~20000Hz的声音,上限为20000Hz,即$frac{p}{2} = 20000$,$p=40000$。那么采样率至少要为40000。CD的采样率采用44100(44.1kHz),据传,在采集模拟信号时采用44100,是因为这些采集的机器以该采样率设置时最为正常,而并非出于理论上的考虑。

    在采样时,若采用低于40000的采样率,就会造成声音的高频部分混叠(alias),也有人把这个说成是“低频混叠了变为高频部分,而高频的部分被混叠为低频部分”,实际上是把频谱上左边部分的高频右移叠加到右边的高频上,而右边部分的高频也左移叠加到了左边的高频上,在上节课我们已经讨论过。这是采用低采样率会导致高频失真的原因。

    image

    从模拟到数字,从连续到离散

    在前面我们讨论的都是连续的信号,在这节,我们将过渡到离散信号的学习。本节计划分为三个部分

    $f(t)$为连续的信号,即$t$是一个连续变量

    1) 找到一种合理的离散逼近$f(t)$的形式

    2) 找到一种合理的离散的逼近$f(t)$的傅里叶变换$mathcal{F}f(s)$的形式

    3) 找到一种从$f$的离散形式到傅里叶变换$mathcal{F}f$的离散形式的合理方法

    下面的推导将建立在抽样定理的误用上

    假设

    $f(t)$受限于$0 leqslant t leqslant L$

    $mathcal{F}f(s)$受限于$0 leqslant s leqslant 2B$

    我们知道频域上的带宽是$-Bleqslant s leqslant B$这种形式,但是这里为了方便后面的推导,采用了上方的这种形式

    实际上这两个假设并不能同时成立,因此称之为抽样定理的误用。

    1. $f(t)$的离散近似

    为了得到一个$f(t)$的离散近似,这里需要以$frac{1}{2B}$的间隔进行采样

    image

    设$f(t)$内共有$N$个采样点,即$Ncdot frac{1}{2B} = L , N = 2BL$

    令$t_0 = 0,t_1 = frac{1}{2B},…,t_{N-1} = frac{N-1}{2B}$

    对$f(t)$进行采样,得

    $f_{sample}(t) = displaystyle{ f(t)sum_{k=0}^{N-1}delta(t-t_k)  = sum_{k=0}^{N-1}f(t_k)delta(t-t_k)}$

    采样得到的项分离出$f(t)$的离散近似为$f(t_0),f(t_1),…,f(t_{n-1})$

    2. $mathcal{F}f(s)$的离散近似

    在经过上面的最后一步后,此时$t$仍然是一个连续变量,即$f_{sample}(t)$是连续的,对它进行傅里叶变换

    $mathcal{F}f_{sample}(s) = displaystyle{sum_{k=0}^{N-1}f(t_k)e^{-2pi ist_k} }$

    为了离散化$mathcal{F}f_{sample}(s)$,我们需要在频域进行采样。关于采样,信号的采样频率是依据该信号在另一个域的性质决定的,我们在时域采样时依据它在频域受限于$0~2B$,而在频域采样是依据它在时域受限于$0~L$,即采样间隔为$frac{1}{L}$。

    image

    设共有$M$个采样点,即

    $Mcdot frac{1}{L} = 2B , M=2BL=N$

    即时域与频域的采样点数目是一样多的。

    令$s_0=0,s_1=frac{1}{L},…,s_{N-1} = frac{N-1}{L}$

    对$mathcal{F}f_{sample}(s)$进行采样

    $egin{align*}
    left(mathcal{F}f_{sample} ight)_{sample}(s)
    &= left(mathcal{F}f_{sample}(s) ight )cdot sum_{m=0}^{N-1}delta(s-s_m)\
    &= left(sum_{k=0}^{N-1}f(t_k)e^{-2pi ist_k} ight )cdotleft( sum_{m=0}^{N-1}delta(s-s_m) ight )\
    &= sum_{k,m=0}^{N-1}f(t_k)e^{-2pi is_mt_k}delta(s-s_m)
    end{align*}$

    频域上的采样值为

    $egin{align*}
    F(s_0) &= displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi i s_0t_k} }\
    F(s_1) &= displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi i s_1t_k} }\
    vdots\
    F(s_{N-1}) &= displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi i s_{N-1}t_k} }
    end{align*}$

    以上就是$f$的离散形式的傅里叶变换的离散近似(That's the discrete approximation to the Fourier transform of the discrete version of f)

    3. 从$f$的离散近似到$mathcal{F}f$的离散近似

    经过上面两个步骤,得到

    $f(t)$被离散化为$f(t_0),f(t_1),…,f(t_{N-1})$

    $mathcal{F}f(s)$被离散化为$F(s_0),F(s_1),…,F(s_{N-1})$,有

    $F(s_m) = displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi is_mt_k} }$

    由于$f(t_k),F(s_m),t_k,s_m$都从连续信号延伸而来,现在我们需要把连续信号完全消除,只保留离散部分

    1) 令$underline{f}[k] = f(t_k)$

        即,有离散信号$underline{f} = left( underline{f}[0],underline{f}[1],…,underline{f}[N-1] ight)$

    2) 令$underline{F}[m] = F(s_m)$

        即,有离散信号的离散傅里叶变换$underline{F} = left( underline{F}[0],underline{F}[1],…,underline{F}[N-1] ight)$

    3) $s_mt_k = frac{m}{L}cdotfrac{k}{2B} = frac{mk}{2BL} = frac{mk}{N}$

        即,$underline{F}[m] = displaystyle{ sum_{k=0}^{N-1}underline{f}[k]e^{-2pi ifrac{mk}{N}} }$

    离散傅里叶变换

    根据上述推导得出结论

    • 设有离散信号$underline{f} = left( underline{f}[0],underline{f}[1],…,underline{f}[N-1] ight)$,它的DFT(离散傅里叶变换)为$underline{F}=left( underline{F}[0],underline{F}[1],…,underline{F}[N-1] ight)$,有

    $underline{F}[m] = displaystyle{ sum_{k=0}^{N-1}underline{f}[k]e^{-2pi ifrac{mk}{N}} }$

  • 相关阅读:
    Docker安装MySQL&Redis
    使用VirtualBox+Vagrant快速搭建Linux虚拟机环境
    Java集合工具类的一些坑,Arrays.asList()、Collection.toArray()...
    1.docker常用命令
    4. 带有延迟时间的Queue(DelayQueue)
    3. 基于优先级的Queue(PriorityBlockingQueue)
    2. 常见的Queue
    1. 模拟Queue
    14. 线程调度
    13. 线程池
  • 原文地址:https://www.cnblogs.com/TaigaCon/p/5090478.html
Copyright © 2020-2023  润新知