(以下内容纯粹抄书。书名:《数字信号处理的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)]