数字信号处理学习(二):振动与信号

8978 Views

(以下内容纯粹抄书。书名:《数字信号处理的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=C1​cosωt+C2​sinωt亦可表示为

x

=

A

1

c

o

s

(

ω

t

+

φ

1

)

\ x=A_1cos(\omega t+\varphi_1)

x=A1​cos(ωt+φ1​)

x

=

A

2

s

i

n

(

ω

t

+

φ

2

)

\ x=A_2sin(\omega t+\varphi_2)

x=A2​sin(ω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​=−arctanC1​C2​​,

φ

2

=

a

r

c

t

a

n

C

1

C

2

\ \varphi_2=arctan\dfrac{C_1}{C_2}

φ2​=arctanC2​C1​​

有关φ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​=A1​sin(ω1​t+φ1​)y2​=A2​sin(ω2​t+φ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=A1​sin(ω1​t+φ1​)+A2​sin(ω2​t+φ2​)=Asin(2ω1​+ω2​​t+φ)若要求合成以后的振动是周期振动,其周期为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=2A0​cos(2ω1​−ω2​​t),即振幅的包络线随时间而周期变化,这时振幅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)]

小米手环丢失如何快速找回?手把手教你四种方法
产品推广常见的5种方式!都有哪些?