信号的时域分析
波形分析就是对直接对所记录的信号幅值随时间变化曲线进行分析。因在时间域进行也称为时域分析。示波器是最常用的信号波形分析工具,可以直接读取信号的幅值、周期等特征参数。
一、信号波形参数识别
1.周期T,频率f=1/T
2.峰值P/双峰值Pp-p,峰值是信号的零线到最大值或最小值,双峰值指的是最大到最小值之间的
3.初相位
4.均值–信号绕零线的波动程度,反映信号变化的中心趋势,也称为直流分量
5.均方值-- 信号能量的强弱,其平方根称为有效值(RMS),也是信号能量的一种表达
6.方差-- 反映信号绕均值的波动程度
二、识别方法
1.周期/频率,相位 过零点检测法
上升沿过零点条件 :
x
(
k
)
≤
0
<
x
(
k
+
1
)
x(k)\leq0<x(k+1)
x(k)≤0<x(k+1)
零点精确位置:零线和 K点与K+1点的交点。
t
0
=
k
∗
Δ
t
+
Δ
t
′
\mathfrak{t}_0=k*\Delta t+\Delta t^{'}
t0=k∗Δt+Δt′
过零点检测法是一种常用的信号处理方法,通过监测信号在时间轴上过零点的次数来分析信号的特征和波形。其原理是基于信号在过零点时,信号的幅值由正变负或由负变正,因此可以通过检测这种变化来获得信号的相关信息。
相邻两过零点时间差就是周期,第一个过零点位置与周期的比例可算出初相位
%对某个正弦波进行过零点检测算法
p=max(x);q=min(x); n=1; %求出最大p、最小值q
at=0.8*(p-q)+q
for k=2:1:N
if (x(k-1)<at && x(k)<=at && x(k+1)>at && x(k+2)>at)
ti(n)=k;n=n+1;
end
end
T=(ti(2)-ti(1))*dt; %注意:此代码未做零点精确位置计算。F=1/0/T;
Q=360*(T-ti(1)*dt)/T;
三、信号数字微分/积分
1.数字微分(中值法)
x ′ ( t ) = d x ( t ) d t ⇒ x ′ ( n ) ≈ x ( n + 1 ) − x ( n − 1 ) 2 ∗ Δ t x^{\prime}(t)=\frac{dx(t)}{dt}\quad\Rightarrow\quad x^{\prime}(n)\approx\frac{x(n+1)-x(n-1)}{2^*\Delta t} x′(t)=dtdx(t)⇒x′(n)≈2∗Δtx(n+1)−x(n−1)
for k = 1:1:N-1
x1(k)=( x(k+1)- x(k-1))/(2*dt);
end
x(0)=x(1);
x(N)=x(N-1);
求红线的斜率,若两点足够密,蓝线的斜率就近似红线的斜率
1.数字积分(梯形法)
y
(
t
)
=
∫
0
t
x
(
t
)
d
t
y
(
n
)
≈
y
(
n
−
1
)
+
Δ
t
∗
[
x
(
n
)
+
x
(
n
−
1
)
]
/
2
\begin{aligned}&y(t)=\int_{0}^{t}x(t)dt\\&y(n)\approx y(n-1)+\Delta t*[x(n)+x(n-1)]/2\end{aligned}
y(t)=∫0tx(t)dty(n)≈y(n−1)+Δt∗[x(n)+x(n−1)]/2
前面阴影部分的面积+新的面积 (近似于梯形面积)
积分常数未知,但一般设为0
y(0)=0;
for k =1:1:N
y(k)=y(k-1)+dt*(x(k)+x(k-1))/2;
end
例如:振动信号:加速度->速度->位移 (对加速度积分得到速度,对速度积分得到位移)
对三角波进行微分得到矩形波微分信号,对其再积分得到三角波,但并不完全一样,差距在积分常量不同。
例1:图像边缘检测→ 二维数字微分sobel算子
先对每一行当作一维信号做微分,再对每一列做微分,这样就可以把图像的边缘提取出来
例2:如何从摄像头获取图像
vid = videoinput('winvideo',1,'YUY2_640x480');
set(vid,'ReturnedColorSpace','rgb'); %设置图像返回格式为rgb
preview(vid);
pause
start(vid);
for(i=1:10)
getpie=getsnapshot(vid);
filename=int2str(i);
filename=[filename,'.jpg']
imwrite(getpic,filename);
pause(0.5); % 每0.5s抓一幅
end
stop(vid);
closepreview(vid);
delete(vid);
clear
FileName,PathName]=uigetfile('*.jpg','Select Jpg File') ;%弹出一个对话框,选择图像
abc=fullfile(PathName,FileName); %返回文件名到abc
I=imread(abc);
imshow(I);
I1=rgb2gray(I); %灰度化
figure
imshow(I1);
BW2 = edge(I1,'Sobel'); %边缘化
figure
imshow(BW2);
四、应用
1.汽车速度测量:周期识别