(以下内容纯粹抄书。书名:《数字信号处理的Matlab实现》)
通过读书,以早日学会随机场的生成!
——————————————————————
S 2.1 振动概述
对于简谐无阻尼振动,其运动方程为 x ¨ + ω 2 x = 0 \ \ddot{x}+\omega^2x=0 x¨+ω2x=0,通解为: x = C 1 c o s ω t + C 2 s i n ω t \ x=C_1cos\omega t+C_2sin\omega t x=C1cosωt+C2sinωt亦可表示为 x = A 1 c o s ( ω t + φ 1 ) \ x=A_1cos(\omega t+\varphi_1) x=A1cos(ωt+φ1) x = A 2 s i n ( ω t + φ 2 ) \ x=A_2sin(\omega t+\varphi_2) x=A2sin(ωt+φ2)式中 A 1 = A 2 = C 1 2 + C 2 2 \ A_1=A_2=\sqrt{C_1^2+C_2^2} A1=A2=C12+C22, φ 1 = − a r c t a n C 2 C 1 \ \varphi_1=-arctan\dfrac{C_2}{C_1} φ1=−arctanC1C2, φ 2 = a r c t a n C 1 C 2 \ \varphi_2=arctan\dfrac{C_1}{C_2} φ2=arctanC2C1
有关φ1和φ2为什么是arctan,具体可参考如下链接:
链接1: https://zhidao.baidu.com/question/2274970883334013108.html.
链接2: 辅助角公式の百度百科.
简谐振动是一种周期振动,它包括三个物理量:振幅A,振动周期T和振动频率f。
简谐振动
y
(
t
)
=
A
c
o
s
(
ω
t
+
φ
)
\ y(t)=Acos(\omega t+\varphi)
y(t)=Acos(ωt+φ)在任一瞬时 t 的相位为:
(
t
−
t
0
T
)
=
ω
t
+
φ
2
π
(\dfrac{t-t_0}{T})=\dfrac{\omega t+\varphi}{2\pi }
(Tt−t0)=2πωt+φ式中,
t
0
\ t_0
t0为某个初始时刻。因为
ω
t
+
φ
\ \omega t+\varphi
ωt+φ角决定了 t 时刻的相位,故称为相位角。初相位角为初始位置的时刻到 y 为最大值的时刻之间的时间差与角频率的乘积( ?)。
当两个简谐振动的频率相同但相位角不同,且相位角分别相差 π 或 0 or 2π 时,这二个简谐振动之间的关系为“反向”或“同相”。
S 2.2 振动合成
若某质点同时参与两个在同一直线上的简谐振动:
{
y
1
=
A
1
s
i
n
(
ω
1
t
+
φ
1
)
y
2
=
A
2
s
i
n
(
ω
2
t
+
φ
2
)
\left\{\begin{aligned} y_1 = A_1sin(\omega_1 t+\varphi_1) \\ y_2 = A_2sin(\omega_2 t+\varphi_2) \end{aligned} \right.
{y1=A1sin(ω1t+φ1)y2=A2sin(ω2t+φ2) 则该质点的运动方程为:
y
=
A
1
s
i
n
(
ω
1
t
+
φ
1
)
+
A
2
s
i
n
(
ω
2
t
+
φ
2
)
=
A
s
i
n
(
ω
1
+
ω
2
2
t
+
φ
)
y=A_1sin(\omega_1 t+\varphi_1) +A_2sin(\omega_2 t+\varphi_2) =Asin(\dfrac{\omega_1+\omega_2}{2}t+\varphi)
y=A1sin(ω1t+φ1)+A2sin(ω2t+φ2)=Asin(2ω1+ω2t+φ)若要求合成以后的振动是周期振动,其周期为T,则必须满足:
T
=
n
T
1
\ T=nT_1
T=nT1,
T
=
m
T
2
\ T=mT_2
T=mT2,m,n为整数。
若采用频率相近、振幅也差不多的两个简谐振动叠加,则会出现“拍”现象。当两振幅频率相等时,运动方程式子中的
A
=
2
A
0
c
o
s
(
ω
1
−
ω
2
2
t
)
\ A=2A_0cos(\dfrac{\omega_1-\omega_2}{2}t)
A=2A0cos(2ω1−ω2t),即振幅的包络线随时间而周期变化,这时振幅A的振动频率
f
b
\ f_b
fb 等于两个振动频率之差的一半,但由于振幅为正与振幅为负之间只是相位相反,因此下图中的振幅频率看似为两个分振动频率之差。
(下面是一张书上自带的代码跑出来的图,在下未做任何修改)
拍现象的现实事件可参考如下视频链接:
链接: 音叉的拍现象视频,链接源于B站
S 2.3 时间信号及采样定理
时间信号分为连续时间信号和离散时间信号。
对于一个离散序列
x
(
t
)
\ {x(t)}
x(t),其内含有两个向量,分别为①描述元素位置的序号序列向量和②描述数值x大小的值序列向量。在matlab中,可以使用stem函数或plot函数,从而以图形的形式表示这些向量。
【stem(X,Y):在X的指定点处画出数据序列Y;序列Y从x轴到数据值按照茎状形式画出,以圆圈终止。】
(下面是一张书上自带的例2-7代码跑出来的图,在下未做任何修改)
对于一高速旋转的物体,假如人持续以某一频率对其进行拍照/采样,那么从采样结果来看,这个物体好像在以不同于真实速率的速度在旋转,这便称之为“假频现象”,该现象如下图所示。本图中,假设原始信号频率为9Hz,采样频率为10Hz,那么采样过后的信号表现出来的信号频率为10Hz-9Hz=1Hz。
为避免假频现象,使采样后的数据可以不失真的描述原信号,因此需要设定采样频率大于信号中所含有信号最大频率的两倍。通常定义采样频率的一半为Nyquist(奈奎斯特)频率,只有信号中的最大频率不大于Nyquist频率,采样后的数据才能不失真的反映原信号。
S 2.4 基本信号
《数字信号处理的Matlab实现》这本书里讲了10种基本信号。
-
指数信号
-
正弦和余弦信号
离散正弦函数通常表示为:
x ( n ) = K s i n ( ω 0 + θ 0 ) x(n)=Ksin(\omega_0+\theta_0) x(n)=Ksin(ω0+θ0) 正弦信号和余弦信号常借用复指数信号表示:
{ e j ω t = c o s ω t + j s i n ω t e − j ω t = c o s ω t − j s i n ω t \left\{\begin{aligned} e^{j\omega t} = cos\omega t+jsin\omega t \\ e^{-j\omega t} = cos\omega t-jsin\omega t \end{aligned} \right. {ejωt=cosωt+jsinωte−jωt=cosωt−jsinωt -
单位阶跃信号
u ( t ) = { 0 , t < 0 1 , t ≥ 0 u(t)=\left\{\begin{aligned} 0,\ \ \ t<0 \\ 1,\ \ \ t≥0 \end{aligned} \right. u(t)={0, t<01, t≥0 -
斜坡信号
r ( t ) = { 0 , t < 0 t , t ≥ 0 r(t)=\left\{\begin{aligned} 0,\ \ \ t<0 \\ t,\ \ \ t≥0 \end{aligned} \right. r(t)={0, t<0t, t≥0 -
正负号信号
s g n ( t ) = { 1 , t < 0 − 1 , t > 0 sgn(t)=\left\{\begin{aligned} 1,\ \ \ t<0 \\ -1,\ \ \ t>0 \end{aligned} \right. sgn(t)={1, t<0−1, t>0 -
脉冲信号
在 ε \ \varepsilon ε时间内,某一方波的面积为1,即满足下式:
S ε ( t ) = { 1 ε , 0 ≤ t ≤ ε 0 , t > ε , t > 0 S_\varepsilon(t)=\left\{\begin{aligned} \dfrac{1}{\varepsilon},& & 0≤t≤\varepsilon \\ 0,& & t>\varepsilon,t>0 \end{aligned} \right. Sε(t)=⎩⎨⎧ε1,0,0≤t≤εt>ε,t>0当 ε → 1 \ \varepsilon \to1 ε→1时,方波的极限就成为单位脉冲函数 δ \delta δ。
由于脉冲函数的卷积特性:
f ( t ) ⊗ δ ( t ) = ∫ − ∞ + ∞ f ( τ ) δ ( t − δ ) d τ = f ( t ) f(t)\otimes \delta (t)=\int_{ - \infty }^{ + \infty } {f(\tau)\delta (t-\delta)d\tau} =f(t) f(t)⊗δ(t)=∫−∞+∞f(τ)δ(t−δ)dτ=f(t)所以任何信号f(t)都可以在时域近似分解为具有不同延时的矩形脉冲信号的叠加,即:
f ( t ) = ∫ − ∞ + ∞ f ( τ ) δ ( t − δ ) d τ f(t)=\int_{ - \infty }^{ + \infty } {f(\tau)\delta (t-\delta)d\tau} f(t)=∫−∞+∞f(τ)δ(t−δ)dτ结构动力学中的Duhamel积分便是使用了此原理。 -
sinc信号
sinc信号为幅值为1的矩形脉冲的Fourier变换,其数学表达为:
s i n c ( t ) = s i n t t sinc(t)=\dfrac{sint}{t} sinc(t)=tsint该函数是一个偶函数,在t的正负两个方向振幅都是逐渐衰减的。
-
复数信号
如果指数信号的指数因子为一复数,则成为复指数信号,表达式为:
f ( t ) = e ( σ + j ω ) t = e σ t ( c o s ω t + j s i n ω t ) f(t)=e^{(\sigma+j\omega)t}=e^{\sigma t}(cos\omega t+jsin\omega t) f(t)=e(σ+jω)t=eσt(cosωt+jsinωt)matlab中对应的求实部和虚部的函数如下(抄书):
n=[-10:10]; %给出序号序列
alpha=-0.1+0.3*j; %给出指数序列
x=exp(alpha*n); %给出复指数信号
Real_x=real(x); %取复指数信号的实部
Image_x=imag(x); %取复指数信号的虚部
Mag_x=abs(x); %取复指数信号的振幅
Phase_x=rad2deg(angle(x)); %取复指数信号的相位,转化为度
- 随机信号
clear;clc;tic
n = 1:10;
x1 = rand(1,n(end)); %产生[0,1]上均匀分布的随机数
x2 = randn(1,n(end)); %产生服从N(0,1)分布的随机数
subplot(2,1,1)
stem(n,x1);title("服从0-1均匀分布的随机数"); grid on
subplot(2,1,2)
stem(n,x2);title("服从N(0,1)标准正态分布的随机数");grid on
- 周期序列
将原来的信号进行重复多次表示,就是周期序列了。
S 2.5 信号的运算
-
信号时移
更改值序列对应的序号序列,…类似于地震动延时 -
信号折叠(翻转)
假设n为序号序列,x为值序列,基于0坐标对原信号进行翻转。其对应matlab函数为:y = fliplr(x); n = -fliplr(n);
-
信号尺度改变
对“序号序列(时间序列)”进行修改,即可压缩or扩展信号 -
信号加
y = x 1 ( t ) + x 2 ( t ) + . . . y=x_1(t)+x_2(t)+... y=x1(t)+x2(t)+... -
信号积分和微分
matlab微分函数:y = diff(x)/dt;
matlab积分函数:y = cumtrapz(x)*dt;
-
信号乘
y = x 1 ( t ) . ∗ x 2 ( t ) y=x_1(t).*x_2(t) y=x1(t).∗x2(t)
其中,频域积分相乘,可以达到滤波的作用。 -
信号奇偶性
任何一个序列x(n)都可以分解为偶向量xe(n)和奇向量xo(n)两部分之和,即:
x ( n ) = x e ( n ) + x o ( n ) x(n)=xe(n)+xo(n) x(n)=xe(n)+xo(n)式中:
x e ( n ) = 1 2 [ x ( n ) + x ( − n ) ] xe(n)=\dfrac{1}{2}[x(n)+x(-n)] xe(n)=21[x(n)+x(−n)] x o ( n ) = 1 2 [ x ( n ) − x ( − n ) ] xo(n)=\dfrac{1}{2}[x(n)-x(-n)] xo(n)=21[x(n)−x(−n)]