给定函数x(t),按照某种法则T,指定新的函数y(t),那么记成
y ( t ) = T [ x ( t ) ] y(t)=T[x(t)] y(t)=T[x(t)]
类似地,给定随机过程X(t),按照法则T,得到
Y ( t ) = T [ X ( t ) ] Y(t)=T[X(t)] Y(t)=T[X(t)]
每个时刻都进行变换,上式整体表示一簇变换。用信号与系统的观点,
变换有随机性变换和确定性变换两种。对于某个实验结果ei,对应一个特定的时间函数x(t,ei),用这个信号作为系统的输入,得到一个特定的输出函数y(t,ei),是Y(t)对应ei的一个样本。上述所谓的随机性是输入随机,而不是变换随机,这叫确定性变换。变换如果也是随机的,叫随机性变换,这里不考虑。
复习一点线性系统:
齐次性、可加性
举当初比较迷的例子:
类似于线性系统,这里引入线性变换的定义:
L [ A 1 X 1 ( t ) + A 2 X 2 ( t ) ] = A 1 L [ X 1 ( t ) ] + A 2 L [ X 2 ( t ) ] L[A_1X_1(t)+A_2X_2(t)]=A_1L[X_1(t)]+A_2L[X_2(t)] L[A1X1(t)+A2X2(t)]=A1L[X1(t)]+A2L[X2(t)]
则称L是线性变换。而若
Y ( t + ϵ ) = L [ X ( t + ϵ ) ] Y(t+\epsilon)=L[X(t+\epsilon)] Y(t+ϵ)=L[X(t+ϵ)]
则称L是线性时不变的。
输出的数学期望等于输入的数学期望线性变换的结果。另一种理解,L和E两个算子可以互相交换顺序。
E [ Y ( t ) ] = L { E [ X ( t ) ] } E[Y(t)]=L\{E[X(t)]\} E[Y(t)]=L{E[X(t)]}
严格证明用概率论中的大数定理,这里不写了。就是样本函数取到无穷多时, Y ( t ) ‾ = L { X ( t ) ‾ } \overline {Y(t)}=L\{\overline {X(t)}\} Y(t)=L{X(t)},而无穷的样本均值根据大数定理就是期望。
R X Y ( t 1 , t 2 ) = L t 2 [ R X ( t 1 , t 2 ) ] R_{XY}(t_1,t_2)=L_{t_2}[R_X(t_1,t_2)] RXY(t1,t2)=Lt2[RX(t1,t2)]
R Y ( t 1 , t 2 ) = L t 1 [ R X Y ( t 1 , t 2 ) ] = L t 1 ⋅ L t 2 [ R X ( t 1 , t 2 ) ] R_Y(t_1,t_2)=L_{t_1}[R_{XY}(t_1,t_2)]=L_{t_1}\cdot L_{t_2}[R_X(t_1,t_2)] RY(t1,t2)=Lt1[RXY(t1,t2)]=Lt1⋅Lt2[RX(t1,t2)]
Lt1表示对t1做L变换,Lt2同理。这个没上个好理解。
因为 X ( t 1 ) Y ( t ) = X ( t 1 ) L [ X ( t ) ] = L [ X ( t 1 ) X ( t ) ] X(t_1)Y(t)=X(t_1)L[X(t)]=L[X(t_1)X(t)] X(t1)Y(t)=X(t1)L[X(t)]=L[X(t1)X(t)]就是不先直接把互相关的两个时间参数都换成随机的,先定一个t1,由于函数固定,又是线性系统,就可以直接将L算子放到外面。然后像下面一样引入期望、进行计算。
E [ X ( t 1 ) Y ( t ) ] = E { L [ X ( t 1 ) X ( t ) ] } = L { E [ X ( t 1 ) X ( t ) ] } E[X(t_1)Y(t)]=E\{L[X(t_1)X(t)]\}=L\{E[X(t_1)X(t)]\} E[X(t1)Y(t)]=E{L[X(t1)X(t)]}=L{E[X(t1)X(t)]}
这时候令t=t_2,就有 R X Y ( t 1 , t 2 ) = L t 2 [ R X ( t 1 , t 2 ) ] R_{XY}(t_1,t_2)=L_{t_2}[R_X(t_1,t_2)] RXY(t1,t2)=Lt2[RX(t1,t2)]
同理,有
R Y ( t 1 , t 2 ) = L t 1 [ R X Y ( t 1 , t 2 ) ] R_Y(t_1,t_2)=L_{t_1}[R_{XY}(t_1,t_2)] RY(t1,t2)=Lt1[RXY(t1,t2)]上面一坨用到的本质就是分解成两步,先从两个中抽出来一个假想成已知的,得出结论;然后再这两步是一样的,把得到的结论再用在那个未知 的上,这么重复一遍就两个同时未知的时候也可以表示了。粗暴理解成求输出和输入的互相关时变得还不彻底,还留着前面t1的一份,所以结果一半是变换后的Y,一半还是原来的X, 就叫输入和输出的关系。而如果用同样的方法,已经拿到了RXY,再利用 E [ Y ( t ′ ) Y ( t ) ] = L { E { L [ X ( t ′ ) X ( t ) } } E[Y(t')Y(t)]=L\{E\{L[X(t')X(t)\}\} E[Y(t′)Y(t)]=L{E{L[X(t′)X(t)}} = L { L { E [ X ( t ′ ) X ( t ) ] } } = L t 1 [ R X Y ( t ′ , t ) ] =L\{L\{E[X(t')X(t)]\}\}=L_{t_1}[R_{XY}(t',t)] =L{L{E[X(t′)X(t)]}}=Lt1[RXY(t′,t)]这样变完就是Y的自协方差。
L t 1 ⋅ L t 2 L_{t_1}\cdot L_{t_2} Lt1⋅Lt2表示复合算子。那根据归纳法,输出的k阶矩可以用输入的相应阶矩确定。假定系统是线性时不变的,那线性变换维持原随机过程严平稳或广义平稳的特性。
上面那个例子已经得出简单的积分系统是线性的。这里看一看导数的情况,只不过把确定的输入函数换作随机过程计算。
例如,某一随机过程经过求导系统 L = d d t L=\frac{d}{dt} L=dtd X ˙ ( t ) = d X ( t ) d t \dot X(t)=\frac{dX(t)}{dt} X˙(t)=dtdX(t)满足线性性质。
用定理1交换算子 E [ X ˙ ( t ) ] = E { [ X ( t ) ] } = L { E [ X ( t ) ] } E[\dot X(t)]=E\{[X(t)]\}=L\{E[X(t)]\} E[X˙(t)]=E{[X(t)]}=L{E[X(t)]}
m X ˙ ( t ) = d m X ( t ) d t m_{\dot X}(t)=\frac{dm_X(t)}{dt} mX˙(t)=dtdmX(t)
根据定理2,得到XY(这里就是X和 X ˙ \dot X X˙了)互相关函数
R X X ˙ ( t 1 , t 2 ) = L t 2 [ R X ( t 1 , t 2 ) ] = ∂ R X ( t 1 , t 2 ) ∂ t 2 R_{X\dot X}(t_1,t_2)=L_{t_2}[R_X(t_1,t_2)]=\frac{\partial R_X(t_1,t_2)}{\partial t_2} RXX˙(t1,t2)=Lt2[RX(t1,t2)]=∂t2∂RX(t1,t2)
自相关函数 R X ˙ ( t 1 , t 2 ) = L t 1 [ R X X ˙ ( t 1 , t 2 ) ] = ∂ R X X ˙ ( t 1 , t 2 ) ∂ t 1 = ∂ 2 R X ( t 1 , t 2 ) ∂ t 1 ∂ t 2 R_{\dot X}(t_1,t_2)=L_{t_1}[R_{X\dot X}(t_1,t_2)]=\frac{\partial R_{X\dot X}(t_1,t_2)}{\partial t_1}=\frac{\partial ^2R_X(t_1,t_2)}{\partial t_1\partial t_2} RX˙(t1,t2)=Lt1[RXX˙(t1,t2)]=∂t1∂RXX˙(t1,t2)=∂t1∂t2∂2RX(t1,t2)
如果X(t)是平稳的,
m X ˙ ( t ) = 0 m_{\dot X}(t)=0 mX˙(t)=0 R X X ˙ ( τ ) = − d R X ( τ ) d τ R_{X\dot X}(\tau)=-\frac{dR_X(\tau)}{d\tau} RXX˙(τ)=−dτdRX(τ) R X ˙ ( τ ) = d R X X ˙ ( τ ) d τ = − d 2 R X ( τ ) d τ 2 R_{\dot X}(\tau)=\frac{dR_{X\dot X}(\tau)}{d\tau}=-\frac{d^2R_X(\tau)}{d\tau ^2} RX˙(τ)=dτdRXX˙(τ)=−dτ2d2RX(τ)互功率谱 G X X ˙ ( ω ) = − j ω G X ( ω ) G_{X\dot X}(\omega)=-j\omega G_X(\omega) GXX˙(ω)=−jωGX(ω)功率谱 G X ˙ ( ω ) = j ω G X X ˙ ( ω ) = ω 2 G X ( ω ) G_{\dot X}(\omega)=j\omega G_{X\dot X}(\omega)=\omega ^2G_X(\omega) GX˙(ω)=jωGXX˙(ω)=ω2GX(ω)其中 R X X ˙ ( τ ) R_{X\dot X}(\tau) RXX˙(τ)是奇函数。 R X X ˙ ( 0 ) = 0 R_{X\dot X}(0)=0 RXX˙(0)=0。平稳随机过程X(t)和它的导数 X ˙ ( t ) \dot X(t) X˙(t)在同一时刻是正交的、不相关的,如果X(t)是正态分布,它们就也是独立的。
完全与《信号与系统》第二章的内容类似。把输入信号的函数表示改成大写表示它有随机性就完了。加深理解,复习为什么与系统冲激响应进行卷积就可以表示输出信号了:(先后利用LTI系统时不变、齐次、线性性好理解,最后一步类似从周期傅里叶级数推出傅里叶变换,又时间间隔的连续变化,将离散和写成连续积分的形式(常 用 技 巧)。)
再进一步,(上步相当于卷积的原理,这步相当于在上面每一步根据系统相应寒素再重复利用一遍LTI系统性质)将冲激函数改成系统冲激响应函数,就能求输出了。推导的方法和上面的一样(当时的重点)。
便于快速计算,从网络摘取一些算好的公式,包括卷积和的情况:
回忆信号通过线性系统的零状态相应,有两种求解方法。传统的就是直接求卷积;高级一点就是先把输入看成冲激信号经过某个系统的响应,然后计算时把卷积转化成乘法,最后再变回来,简单了一点。对于随机过程,输入不知道是什么东西,后面的有点困难,就用前一个写一写。
Y ( t ) = ∫ − ∞ ∞ X ( t − τ ) h ( τ ) d τ = ∫ − ∞ ∞ X ( τ ) h ( t − τ ) d τ = h ( t ) ∗ X ( t ) Y(t)=\int_{-\infty}^{\infty}X(t-\tau)h(\tau)d\tau=\int_{-\infty}^{\infty}X(\tau)h(t-\tau)d\tau=h(t)*X(t) Y(t)=∫−∞∞X(t−τ)h(τ)dτ=∫−∞∞X(τ)h(t−τ)dτ=h(t)∗X(t)
输入不是确定的,但根据某一时刻的输入求出来输出均值还是星的。
m Y ( t ) = L [ m X ( t ) ] = h ( t ) ∗ m X ( t ) = ∫ − ∞ ∞ m X ( t − τ ) h ( τ ) d τ m_Y(t)=L[m_X(t)]=h(t)*m_X(t)=\int_{-\infty}^{\infty}m_X(t-\tau)h(\tau)d\tau mY(t)=L[mX(t)]=h(t)∗mX(t)=∫−∞∞mX(t−τ)h(τ)dτ
再者,如果X(t)是平稳的,
m Y = ∫ − ∞ ∞ m X h ( τ ) d τ = m X ∫ − ∞ ∞ h ( τ ) d τ = m X H ( 0 ) m_Y=\int_{-\infty}^{\infty}m_Xh(\tau)d\tau=m_X\int_{-\infty}^{\infty}h(\tau)d\tau=m_XH(0) mY=∫−∞∞mXh(τ)dτ=mX∫−∞∞h(τ)dτ=mXH(0)
H(0)是系统传递函数在 ω = 0 \omega=0 ω=0处的值。
输入和输出的互相关函数 R X Y ( t 1 , t 2 ) = L t 2 [ R X ( t 1 , t 2 ) ] = h ( t 2 ) ∗ R X ( t 1 , t ) = ∫ − ∞ ∞ R X ( t 1 , t 2 − u ) h ( u ) h ( u ) d u R_{XY}(t_1,t_2)=L_{t_2}[R_X(t_1,t_2)]=h(t_2)*R_X(t_1,t_)=\int_{-\infty}^{\infty}R_X(t_1,t_2-u)h(u)h(u)du RXY(t1,t2)=Lt2[RX(t1,t2)]=h(t2)∗RX(t1,t)=∫−∞∞RX(t1,t2−u)h(u)h(u)du
输出的自相关函数
R Y ( t 1 , t 2 ) = L t 1 [ R X Y ( t 1 , t 2 ) ] = h ( t 2 ) ∗ R X Y ( t 1 , t 2 ) = ∫ − ∞ ∞ R X Y ( t 1 − u , t 2 ) h ( u ) d u R_Y(t_1,t_2)=L_{t_1}[R_{XY}(t_1,t_2)]=h(t_2)*R_{XY}(t_1,t_2)=\int_{-\infty}^{\infty}R_{XY}(t_1-u,t_2)h(u)du RY(t1,t2)=Lt1[RXY(t1,t2)]=h(t2)∗RXY(t1,t2)=∫−∞∞RXY(t1−u,t2)h(u)du十分容易混淆卷积过程中到底谁减了u。还需注意,这里写成了u不是τ了,因为平稳过程中那个时间差用了τ,再用就容易混了。
综合上面的自相关函数和互相关函数,
R Y ( t 1 , t 2 ) = h ( t 1 ) ∗ R X Y ( t 1 , t 2 ) = h ( t 1 ) ∗ h ( t 2 ) ∗ R X ( t 1 , t 2 ) R_Y(t_1,t_2)=h(t_1)*R_{XY}(t_1,t_2)=h(t_1)*h(t_2)*R_X(t_1,t_2) RY(t1,t2)=h(t1)∗RXY(t1,t2)=h(t1)∗h(t2)∗RX(t1,t2)
同理,有
R Y X ( t 1 , t 2 ) = h ( t 1 ) ∗ R X ( t 1 , t 2 ) R_{YX}(t_1,t_2)=h(t_1)*R_X(t_1,t_2) RYX(t1,t2)=h(t1)∗RX(t1,t2)
R Y ( t 1 , t 2 ) = h ( t 2 ) ∗ R Y X ( t 1 , t 2 ) R_Y(t_1,t_2)=h(t_2)*R_{YX}(t_1,t_2) RY(t1,t2)=h(t2)∗RYX(t1,t2)
如果X(t)是平稳随机过程 ,
R X Y ( t 1 , t 2 ) = ∫ − ∞ ∞ R X ( t 1 , t 2 − u ) h ( u ) d u = ∫ − ∞ ∞ R X ( t 1 − t 2 + u ) h ( u ) d u = ∫ − ∞ + ∞ R X ( τ + u ) h ( u ) d u R_{XY}(t_1,t_2)=\int_{-\infty}^\infty R_X(t_1,t_2-u)h(u)du=\int_{-\infty}^{\infty}R_X(t_1-t_2+u)h(u)du=\int_{-\infty}^{+\infty}R_X(\tau+u)h(u)du RXY(t1,t2)=∫−∞∞RX(t1,t2−u)h(u)du=∫−∞∞RX(t1−t2+u)h(u)du=∫−∞+∞RX(τ+u)h(u)du
那就是 R X Y ( τ ) = h ( − τ ) ∗ R X ( τ ) R_{XY}(\tau)=h(-\tau)*R_X(\tau) RXY(τ)=h(−τ)∗RX(τ)
同理 R Y ( t 1 , t 2 ) = ∫ − ∞ ∞ R X Y ( t 1 − u , t 2 ) h ( u ) d u = ∫ − ∞ ∞ R X Y ( t 1 − t 2 − u ) h ( u ) d u = ∫ − ∞ ∞ R X Y ( τ − u ) h ( u ) d u R_Y(t_1,t_2)=\int_{-\infty}^{\infty}R_{XY}(t_1-u,t_2)h(u)du=\int_{-\infty}^{\infty}R_{XY}(t_1-t_2-u)h(u)du=\int_{-\infty}^{\infty}R_{XY}(\tau-u)h(u)du RY(t1,t2)=∫−∞∞RXY(t1−u,t2)h(u)du=∫−∞∞RXY(t1−t2−u)h(u)du=∫−∞∞RXY(τ−u)h(u)du也就是
R Y ( τ ) = h ( τ ) ∗ R X Y ( τ ) R_Y(\tau)=h(\tau)*R_{XY}(\tau) RY(τ)=h(τ)∗RXY(τ)
R Y ( τ ) = h ( − τ ) ∗ h ( τ ) ∗ R X ( τ ) R_Y(\tau)=h(-\tau)*h(\tau)*R_X(\tau) RY(τ)=h(−τ)∗h(τ)∗RX(τ)
R Y X ( τ ) = h ( τ ) ∗ R X ( τ ) R_{YX}(\tau)=h(\tau)*R_X(\tau) RYX(τ)=h(τ)∗RX(τ) R Y ( τ ) = h ( − τ ) ∗ R Y X ( τ ) R_Y(\tau)=h(-\tau)*R_{YX}(\tau) RY(τ)=h(−τ)∗RYX(τ)以上诸式看似写了一坨,实际上都是基于线性变换那个第二个定理做了一步推广得到的。所以关键在记住最初的那一坨性质。刚才推的记忆会比较迷,但只要抓住卷一个是不彻底的,两个中有个变化前的,是互协方差;而卷两个就全是变完的了,那就感觉还行。至于平稳随机过程,就还是把t1 t2换成了τ来写,需要看看系统传递函数中的t经过推导也成了τ,整挺好的。这波的关键就是利用平稳随机过程只与时间差有关的性质,把位于t1 t2的时间中的t2拉回了原点。就是那个 R Y ( t 1 , t 2 ) = ∫ − ∞ ∞ R X Y ( t 1 − u , t 2 ) h ( u ) d u = ∫ − ∞ ∞ R X Y ( t 1 − t 2 − u ) h ( u ) d u = ∫ − ∞ ∞ R X Y ( τ − u ) h ( u ) d u R_Y(t_1,t_2)=\int_{-\infty}^{\infty}R_{XY}(t_1-u,t_2)h(u)du=\int_{-\infty}^{\infty}R_{XY}(t_1-t_2-u)h(u)du=\int_{-\infty}^{\infty}R_{XY}(\tau-u)h(u)du RY(t1,t2)=∫−∞∞RXY(t1−u,t2)h(u)du=∫−∞∞RXY(t1−t2−u)h(u)du=∫−∞∞RXY(τ−u)h(u)du。
上图基本RC电路输入为零均值平稳随机过程,相关函数
R X ( τ ) = e − β ∣ τ ∣ R_X(\tau)=e^{-\beta|\tau|} RX(τ)=e−β∣τ∣求稳态输出Y(t)的自相关函数。
根据电基知识,冲激响应
h ( t ) = 1 R C e − α t U ( t ) h(t)=\frac{1}{RC}e^{-\alpha t}U(t) h(t)=RC1e−αtU(t)
输入与输出的自相关函数
R X Y ( τ ) = h ( − τ ) ∗ R X ( τ ) = ∫ 0 + ∞ R X ( τ + u ) h ( u ) d u = ∫ 0 + ∞ e − β ∣ τ + u ∣ α e − α u d u R_{XY}(\tau)=h(-\tau)*R_X(\tau)=\int_{0}^{+\infty}R_X(\tau+u)h(u)du=\int_{0}^{+\infty}e^{-\beta|\tau+u|}\alpha e^{-\alpha u}du RXY(τ)=h(−τ)∗RX(τ)=∫0+∞RX(τ+u)h(u)du=∫0+∞e−β∣τ+u∣αe−αudu
当然,这里 α = 1 R C \alpha=\frac{1}{RC} α=RC1。看出来做题不需要上面一坨那么复杂,直接用就完了。当然,把这个积分号去掉也需要一定技巧。通过对τ大于、小于、等于0进行讨论,使用高数的知识化简就完了。
如果音高值几乎是恒定的,那么音高信息就能够找到。对于清音的片段,可以发现获得的音高因素很小,并且变化很大。那么可以说轻音片段的音高信息是缺失的。如果能找到重复的音高,这个片段就是浊音。
这个用python验证算了:
# Chroma Frequencies
# Loading the file
x, sr = librosa.load('D:\狗血.wav')
hop_length = 512
chromagram = librosa.feature.chroma_stft(x, sr=sr, hop_length=hop_length)
plt.figure(figsize=(15, 5))
librosa.display.specshow(chromagram, x_axis='time', y_axis='chroma', hop_length=hop_length, cmap='coolwarm')
可以看出,在两端没唱歌的地方(近似成白噪声),和发清音的地方(中间有两处),红的(表示按照频率倍数关系归一化的音符)分布很乱;而在唱的部分,它可以根据声音信号找到固定频率,是比较整齐的。这个程序的结果与上面不完全是一个意思,基本能说明问题。
刚才验证的时候反复出现文件读取失败、不能调到想要的形式的问题,例如没有跳过前面的音频格式信息,导致把那些二进制文件当成了声音文件读进去了;没意识到导入的信号是双声道,而WAV文件是并行设置的,由于两个声道的相位不一定就相等,顺序读取得到的声音信号得不出上述任何结论。
网络上的这个表格很能说明问题:
所以,用fopen fread读取二进制文件应该跳过前44个字节才行。