当前位置:文档之家› MATLAB在机械振动信号中的应用

MATLAB在机械振动信号中的应用

MATLAB在机械振动信号中的应用
MATLAB在机械振动信号中的应用

MATLAB在机械振动信号中的应用

申振

(山东理工大学交通与车辆工程学院)

摘要:综述了现代信号分析处理理论、方法如时域分析(包括时域参数识别、相关分析等)、频域分析(包括傅立叶变换、功率谱分解等),并结合MATLAB中的相关函数来对所拟合的振动信号进行时域分析和频域分析,并对绘出的频谱图进行说明。

关键词:时域分析频域分析MATLAB

信号是信息的载体,采用合适的信号分析处理方法以获取隐藏于传感观测信号中的重要信息(包括时域与频域信息等),对于许多工程应用领域均具有重要意义。对获取振动噪声信号的分析处理,是进行状态监测、故障诊断、质量检查、源识别、机器产品的动态性能测试与优化设计等工作的重要环节,它可以预先发现机械部件的磨损和缺陷等故障,从而可以提高产品的质量,降低维护费用。随着测试技术的迅速发展,各种信号分析方法也随之涌现,并广泛应用在各个领域[1]。

时域描述简单直观,只能反映信号的幅值随时间的变化,而不能明确的揭示信号随时间的变化关系。为了研究信号的频率组成和各频率成分的幅值大小、相位关系,应对信号进行频谱分析,即把时域信号通过适当的数学方法处理变成频率f(或角频率 )为独立变量,相应的幅值或相位为因变量的频域描述。频域分析法将时域分析法中的微分或差分方程转换为代数方程,有利于问题的分析[2]。

MATLAB是MathWorks公司于1982年推出的一种功能强大、效率高、交互性好的数值计算和可视化计算机高级语言,它将数值分析、矩阵运算、信号处理和图形显示

有机地融合为一体,形成了一个极其方便、用户界面良好的操作环境。随着其自身版本的不断提高,MATLAB 的功能越来越强大,应用范围也越来越广,如广泛应用于信号处理、数字图像处理、仿真、自动化控制、小波分析及神经网络等领域[3]。

本文主要运用了MATLAB R2014a 对机械振动信号进行分析。分析过程包括时域分析和频域分析两大部分,时域分析的指标包括随机信号的均值、方差以及均方值。频域分析的性能指标包括对功率谱分析、倒频谱分析。在进行上述分析之前先要对振动信号进行拟合。机械振动分为确定性振动和随机振动,确定性振动又分为周期振动和非周期振动,周期振动又进一步分为简谐振动和复杂的周期振动。所以可以根据上述的分类来拟合振动信号[2]。在设计信号的处理程序时,运用MATLAB 中的相关函数来对所拟合的振动信号进行时域分析和频域分析,并对绘出的频谱图进行说明。 1 时域分析

1.1 均值 对于一个各态历经随机随机信号()x t ,其均值x μ为

1lim ()T

x T x t dt T μ→∞=? (1)

式中 ()x t ——样本函数; T ——观测时间;

x μ——常值分量。

1.2 方差 2

x σ是描述随机信号的波动分量,定义为

2

201lim [()]T

x

x T x t dt T σμ→∞=-?

(1)

它表示信号()x t 偏离其均值x μ平方的均值,方差的正平方根x σ称为标准差。

1.3 均方值 2

x ψ是随机信号()x t 平方的平均值,定义为

22

1lim

()T x T x t dt T ψ→∞=? (3)

它描述信号的能量或强度,是()x t 平方的均值。均方值的正平方根值称为均方根值

rms x 。参数x μ、2x σ、2x ψ之间的关系为

2

22=-x

x x σψμ (4) 1.4 时域统计分析 概率密度分析是以幅值大小为横坐标,以每个幅值间隔内出现的概率

为纵坐标进行统计分析的方法。它反映了信号落在不同幅值强度区域内的概率情况。计算方法如下:

0001/[()]1()lim lim lim ()T T n

x i x x x i T T P x x t x x p x t x x T x →∞→∞

?→?→?→=<≤+?===????∑ (5) 概率密度函数()p x 给出了信号取不同幅值大小的概率,是随机信号的主要特征参数之

一。不同的随机信号有不同的概率密度函数图形,可以借此来识别信号的性质,如正弦信号加随机噪声、窄带随机信号及宽带随机信号等。概率分布函数是信号幅值小于或等于某值R 的概率,定义为:

()()F x p x dx ∞

-∞=? (6)

概率分布函数又称为累积概率函数,表示了信号幅值落在某一区间的概率[4]。 2 频域分析

2.1 傅里叶变换

任何周期函数,均可展开成正交函数线性组合的无穷级数,如三角函数集的傅里叶级数。

叶级数的表达形式如下:

001

()sin()2n n n a x t A n t ω?∞

==++∑ (7)

001,2,3,arctan n n

n n A a A n a b ??

?=??==???=??

L ()

(8) 对于非周期信号或瞬变信号,利用如下的傅立叶变换进行频谱分析:

22()()()()j ft j ft

X f x t e dt x t X f e df ππ∞--∞∞

-∞

?=?

??=??? (9)

2.2 功率谱分析

2.2.1 经典功率谱估计方法

若()x t 为平稳随机信号,当自相关函数为绝对可积时,自相关函数()xx R ω和功率谱密度()x S ω为一个傅里叶变换对,即

()()1()()2j x

xx j xx x S R e d R S e d ωτωτ

ωττ

τωωπ∞--∞∞--∞?=???=?

?? (10) 同理,在频域描述两个随机信号()x t 和()y t 相互关联程度的数字特征,可以定义为互谱功率密度简称互谱密度。而且,互相关函数与互谱密度是一个傅里叶变换对。

()()1()()2j xy

xy j xy xy S R e d R S e d ωτωτ

ωττ

τωωπ∞--∞∞--∞?=???=?

?? (11)

2.2.2 改进的直接估计法

直接法和间接法的方差性能很差,而且当数据长度太大时,谱曲线起伏加剧;若数据长度太小,则谱的分辨率又不好,所以需要改进[3]。

提高的周期图法估计的另一种方式就是采用对采样数据分段使用非矩形窗,即Welch 法。由于非矩形窗在边沿趋近于零,从而减少了分段对重叠的依赖。选择合适的窗函数,采用每段一半的重叠率能大大降低谱估计的方差。这种方法中,记录数据仍分成N

K K

=

段,即 ()()()

01,1i x n x n iM N n M i K =+-≤≤-≤≤ (12)

每段M 个取样。窗函数()w n 在计算周期图之前就与数据段相乘,于是可定义K 个修正周期图

2

1()

()

1()()()1,2,,M i i j n M n J x

n w n e i K MU

ωω--==

=∑L (13)

U 是窗口序列函数的平均能量

12

1()M n U w n M

-==

∑ (14)

则定义谱估计为

()1

1

()()K

w i x

M

i B J

K

ωω==

∑ (15)

2.2.3 AR 模型功率谱估计法

传统的功率谱估计方法是利用加窗的数据或加窗的相关函数估计值的傅里叶变换来计算的,具有一定的优势,如计算效率高,估计值正比于正弦波信号的功率等。但是同时也存在许多缺点,主要缺点就是方差性能较差、谱分辨率低。而参数模型法可大大

提高功率谱估计的分辨率,是现代谱估计的主要研究内容,在语音分析、数据压缩以及通信等领域有着广泛的应用[3]。

按照模型化进行功率谱估计,其主要思想如下: (1) 选择模型;

(2) 从给出的数据样本估计假设的模型;

(3) 将估计的模型参数打入模型的理论功率谱公式中得出一个较好的谱估计值。 假设产生随机序列()x n 的系统模型为一个线性差分方程,即

()()()q

q

i j i j o

x n b w n i a x n j ===---∑∑ (16)

式中,()w n 表示白噪声序列,对上式进行Z 变换,可得

()()q

q

k

i j i

j i a X z z

bW z z --===∑∑ (17) 所以系统的传递函数为

()()

()()()

X z B z H z W z A z =

= (18) 式中,

0()q

j j j A z a z -==∑ (19)

()q

i i i B z b z -==∑ (20)

假定输入白噪声功率谱密度为2

()w w P z σ=,那么输出功率谱密度为

121()()

()()()

x w

B z B z P z A z A z σ--= (21)

又根据j z e ω=,所以得

2

2

()

()()

j x w

j B e P A e ωωωσ= (22)

这样,当确定了系数j a 、i b 和2

w σ后,就可以求解得到随机信号的功率谱密度()x p ω了。

通过上式可知,如果1i >,0i b =时,则系统的差分方程变为

1()()()q

j j x n a x n j w n ==--+∑ (23)

上式即为自回归模型,简称为AR (Auto-Regressive )模型,再将该式进行Z 变换,得

1()1

1()()()

1q

j

j j X z H z W z A z a z -==

==+∑ (24)

所以,AR 模型又称为全极点模型。AR 模型的输出功率谱为

222

1

()()

1w

w

x j q

j k

j j P A e a e ωωσσω-==

=

+∑ (25)

显然,计算出2

w σ和j a 后,就可以求解得到随机信号的功率谱密度()x p ω。

本文采用AR 模型的一种Burg 法进行功率谱估计。

3 仿真研究

仿真带噪声信号如下: 1.0 2.012()6sin(2)8sin(2)()t t x t e f t e f t randn t ππ--=++

该仿真带噪声信号由两个正弦信号 1.016sin(2)t e f t π-、 2.028sin(2)t e f t π-和一个服从正态分布的高斯白噪声信号()randn t 叠加而成。12100,300f Hz f Hz ==。其时域波形如图1所

示(程序详见附录1)。

图1 时域波形图时域分析结果:

序列的平均值为0.5050

序列的最小值为-10.7448

序列的最大值为12.0222

序列的标准差为 2.9153

序列的方差为8.4992

序列的均方值为 2.9580

图2 经典功率谱估算图

在功率谱中可以很明显的看到振动信号中有100Hz和300Hz两个主要的频率。表明信号中含有这两个频率的周期成分。如图2

图3 FFT频谱图

上图3为FFT频谱图,从该频谱中可以看到有三个主要高峰值,即在0Hz,100Hz,300Hz处。

用Burg法进行PSD估计功率谱图如图4,从中可以很明显的看到振动信号中有100Hz和300Hz两个主要的频率。表明信号中含有这两个频率的周期成分(程序详见附录3):

图4 Burg法进行PSD估计功率谱图

在Welch法进行PSD功率谱估计,当采用不同窗函数时的结果。从中可以很明显的看到振动信号中有100Hz和300Hz两个主要的频率。表明信号中含有这两个频率的周期成分。且海宁窗和布莱克曼窗较为明显(程序详见附录2)。

图5 Welch法进行PSD功率谱估计功率谱图

图5 倒谱图

理论上,傅立叶变换用于频谱分析,可以找出受噪声干扰的信号的频率成分,而这用时域分析是不能分辨的。对傅立叶变换做复共轭运算,即可得到信号的功率谱密度函数,以显示各频率分量的能量分布。仿真带噪信号的傅立叶变换与功率谱分解结果如图3和图4、5、6所示。从图3和图4、5、6可以清楚看到,约在频率为100Hz、300Hz (即振动信号频率的倍频)处频谱幅值和能量出现局部极大值,对应机械振动的主振动源所在。

4结论

信号是信息的载体,因此采用合适的信号分析处理方法以获取隐藏于传感观测信号中的重要信息(包括时域与频域信息等),对于许多工程应用领域均具有重要意义。本文在研究现代信号分析处理理论、方法如时域分析(包括时域参数识别、相关分析以及统计分析等)、频域分析(包括傅立叶变换、功率谱分解等)的基础上,结合仿真数据对机械振动信号分析处理,具有一定的参考价值。

参考文献

[1] 冯凯.工程测试技术[M].西安:西北工业大学出版社,2003.

[2] 许同乐.机械工程测试技术.北京:机械工业出版社,2010.

[3] 薛年喜.MATLAB在数字信号处理中的应用(第二版).北京:清华大学出版社,2008

[4] 焦卫东.旋转机械振动信号分析.浙江.嘉兴学院学报.2007.

附录

附录一:时域分析、频域分析程序

A1=6;A2=8;

f1=100;f2=300;fs=1000;

t=0:1/fs:2;

N=length(t);

X1=A1*exp(-1.0*t).*sin(2*pi*f1*t);

X2=A2*exp(-2.0*t).*sin(2*pi*f2*t);

R=rand(1,N);

Y=X1+X2+R;

figure(1);plot(t,Y);

title('振动信号的波形');

xlabel('时间/秒');

ylabel('幅度');

grid; hold on;

%时域分析

mi=min(Y); disp(mi);%最小值

mx=max(Y); disp(mx);%最大值

st=std(Y); disp(st);%标准差

m=mean(Y); disp(m); %均值

vr=var(Y); disp(vr);%方差

rm=rms(Y); disp(rm);%均方值

%频域分析

l=length(Y);

r=fft(Y)/l;r=fftshift(r);

f=linspace(-fs/2,fs/2,l);

figure(2);plot(f,abs(r)); grid; hold on; figure(3);

psd(Y,2048,1000,kaiser(512,5),0,0.95); figure(4);

yc=rceps(Y);

plot(yc);

附录二:Welch方法进行PSD估计程序A1=6;A2=8;

f1=100;f2=300;fs=1000;

nfft=1024;

t=0:1/fs:2;

N=length(t);

X1=A1*exp(-1.0*t).*sin(2*pi*f1*t);

X2=A2*exp(-1.5*t).*sin(2*pi*f2*t);

R=rand(1,N);

Y=X1+X2+R;

window1=boxcar(100);

window2=hamming(100);

window3=blackman(100);

noverlap=20;

[Pxx1,f1]=pwelch(Y,window1,noverlap,nfft,fs); [Pxx2,f2]=pwelch(Y,window2,noverlap,nfft,fs); [Pxx3,f3]=pwelch(Y,window3,noverlap,nfft,fs); PXX1=10*log10(Pxx1);

PXX2=10*log10(Pxx2);

PXX3=10*log10(Pxx3);

subplot(3,1,1)

plot(f1,PXX1);

title('矩形窗');

subplot(3,1,2)

plot(f2,PXX2);

title('海宁窗');

subplot(3,1,3)

plot(f3,PXX3);

xlabel('频率(Hz)');

ylabel('幅度(dB)');

title('布莱克曼窗');

附录三:Burg方法进行PSD估计程序

A1=6;A2=8;

f1=100;f2=300;fs=1000;

nfft=1024;

t=0:1/fs:2;

N=length(t);

X1=A1*exp(-1.0*t).*sin(2*pi*f1*t);

X2=A2*exp(-1.5*t).*sin(2*pi*f2*t);

R=rand(1,N);

Y=X1+X2+R;

[P,f]=pburg(Y,18,nfft,fs); Pxx=10*log10(P); figure

plot(f,Pxx);

grid on;

xlabel('频率(Hz)'); ylabel('幅度(dB)');

卡尔曼滤波算法与matlab实现

一个应用实例详解卡尔曼滤波及其算法实现 标签:算法filtermatlabalgorithm优化工作 2012-05-14 10:48 75511人阅读评论(25) 收藏举报分类: 数据结构及其算法(4) 为了可以更加容易的理解卡尔曼滤波器,这里会应用形象的描述方法来讲解,而不是像大多数参考书那样罗列一大堆的数学公式和数学符号。但是,他的5条公式是其核心内容。结合现代的计算机,其实卡尔曼的程序相当的简单,只要你理解了他的那5条公式。 在介绍他的5条公式之前,先让我们来根据下面的例子一步一步的探索。 假设我们要研究的对象是一个房间的温度。根据你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做时间单位)。假设你对你的经验不是100%的相信,可能会有上下偏差几度。 我们把这些偏差看成是高斯白噪声(White Gaussian Noise),也就是这些偏差跟前后时间是没有关系的而且符合高斯分配(Gaussian Distribution)。另外,我们在房间里放一个温度计,但是这个温度计也不准确的,测量值会比实际值偏差。我们也把这些偏差看成是高斯白噪声。 好了,现在对于某一分钟我们有两个有关于该房间的温度值:你根据经验的预测值(系统的预测值)和温度计的值(测量值)。下面我们要用这两个值结合他们各自的噪声来估算出房间的实际温度值。 假如我们要估算k时刻的是实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的:如果k-1时刻估算出的最优温度值的偏差是3,你对自己预测的不确定度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里得到了k时刻的温度值,假设是25度,同时该值的偏差是4度。 由于我们用于估算k时刻的实际温度有两个温度值,分别是23 度和25度。究竟实际温度是多少呢?相信自己还是相信温度计呢?究竟相信谁多一点,我们可以用他们的covariance(协方差)来判断。因为Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们可以估算出k时刻的实际温度值是:23+0.78*(25-23)=24.56度。 可以看出,因为温度计的covariance比较小(比较相信温度计),所以估算出的最优温度值偏向温度计的值。 现在我们已经得到k时刻的最优温度值了,下一步就是要进入k+1时刻,进行新的最优估算。到现在为止,好像还没看到什么自回归的东西出现。对了,在进入k+1时刻之前,我们还要算出k时刻那个最优值(24.56 度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35。这里的5就是上面的k时刻你预测的那个23度

matlab归一化处理数据

matlab 中归一化的几种方法及其各自的适用条件 关于神经网络(matlab)归一化的整理 关于神经网络归一化方法的整理 由于采集的各数据单位不一致,因而须对数据进行[-1,1]归一化处理,归一化方法主要有如下几种,供大家参考:(by james) 1、线性函数转换,表达式如下: y=(x-MinValue)/(MaxValue-MinValue) 说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。 2、对数函数转换,表达式如下: y=log10(x) 说明:以10为底的对数函数转换。 3、反余切函数转换,表达式如下: y=atan(x)*2/PI 归一化是为了加快训练网络的收敛性,可以不进行归一化处理 归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。归一化有同一、统一和合一的意思。无论是为了建模还是为了计算,首先基本度量单位要同一,神经网络是以样本在事件中的统计分别几率来进行训练(概率计算)和预测的,归一化是同一在0-1之间的统计概率分布; 当所有样本的输入信号都为正值时,与第一隐含层神经元相连的权值只能同时增加或减小,从而导致学习速度很慢。为了避免出现这种情况,加快网络学习速度,可以对输入信号进行归一化,使得所有样本的输入信号其均值接近于0或与其均方差相比很小。 归一化是因为sigmoid函数的取值是0到1之间的,网络最后一个节点的输出也是如此,所以经常要对样本的输出归一化处理。所以这样做分类的问题时用[0.9 0.1 0.1]就要比用[1 0 0]要好。 但是归一化处理并不总是合适的,根据输出值的分布情况,标准化等其它统计变换方法有时可能更好。 关于用premnmx语句进行归一化: premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T) 其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和最大值。mint 和maxt分别为T的最小值和最大值。 premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。 我们在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx。 下面介绍tramnmx函数: [Pn]=tramnmx(P,minp,maxp) 其中P和Pn分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的最大值和最小值。 (by terry2008) matlab中的归一化处理有三种方法 1. premnmx、postmnmx、tramnmx

matlab中关于数字滤波器的函数介绍

MATLAB下的数字信号处理实现示例 一信号、系统和系统响应 1、理想采样信号序列 (1)首先产生信号x(n),0<=n<=50 n=0:50; %定义序列的长度是50 A=444.128; %设置信号有关的参数 a=50*sqrt(2.0)*pi; T=0.001; %采样率 w0=50*sqrt(2.0)*pi; x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); (2)绘制信号x(n)的幅度谱和相位谱 k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)(3)改变参数为:1,0734.2,4.0,10==Ω==TAα n=0:50; %定义序列的长度是50 A=1; %设置信号有关的参数 a=0.4; T=1; %采样率 w0=2.0734; x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’) 2、单位脉冲序列 在MatLab中,这一函数可以用zeros函数实现: n=1:50; %定义序列的长度是50 x=zeros(1,50); %注意:MATLAB中数组下标从1开始

对周期方波信号进行滤波matlab的实现

对周期方波信号进行滤波 ) 1、生成一个基频为10Hz的周期方波信号; ) 2、设计一个滤波器,滤去该周期信号中40Hz以后的频率成分,观察滤波前后的信号波形和频谱。 )3、如果该信号x(t)淹没在噪声中(随机噪声用randn(1,N)生成,N为其样点数),试滤去噪声。 %采样频率取200Hz,可以改变看看。输入、输出信号频谱同时绘制在一起对比 %采用低通滤波器,保留40Hz以下频率成分 clear fs=200; t=0:1/fs:1; x=square(2*pi*10*t); wp=40*2/fs; ws=45*2/fs; Rp=3;Rs=45;Nn=128; [N,wn]=buttord(wp,ws,Rp,Rs) [b,a]=butter(N,wn,'low') y=filter(b,a,x); figure(1) plot(t,x,'r-',t,y) %grid on axis([0 1.2 -2 2]) title('红色代表原信号,蓝色代表只保留40Hz以下频率成分') figure(2) [H,W]=freqz(b,a); k=0:511; plot((fs/2)/512*k,abs(H)); grid on title('滤波器频率响应') T=1/fs; N=4*(fs/10); n=0:N-1; xn=square(2*pi*10*n*T); X=fftshift(fft(xn,512)); xk=1/N*X;

Y=fftshift(fft(y,512)); yk=1/N*Y; figure(3) plot(-fs/2+fs/512*k,abs(xk)) grid on legend('方波信号的频谱') figure(4) plot(-fs/2+fs/512*k,abs(xk),'b',-fs/2+fs/512*k,abs(yk),'r') grid on legend('原信号的频谱','滤波后信号的频谱') %%%%%%%%%%%%%%%%%%%%保留40Hz频率成分%%%%%%%%%%%% %采样频率取200Hz,可以改变看看。输入、输出信号频谱同时绘制在一起对比 %采用带通滤波器,只保留40Hz频率成分 clear fs=200; t=0:1/fs:1; x=square(2*pi*10*t); wp=[35 45]*2/fs; ws=[30 50]*2/fs; Rp=3;Rs=45;Nn=128; [N,wn]=buttord(wp,ws,Rp,Rs) [b,a]=butter(N,wn,'bandpass') %只保留40Hz频率成分 y=filter(b,a,x); figure(1) plot(t,x,'r-',t,y) grid on axis([0 1.2 -1.2 1.2]) title('红色代表原信号,蓝色代表只保留40Hz频率成分') figure(2) [H,W]=freqz(b,a); k=0:511; plot((fs/2)/512*k,abs(H)); grid on title('滤波器频率响应') T=1/fs; N=4*(fs/10); n=0:N-1; xn=square(2*pi*10*n*T);

扩展卡尔曼滤波matlab程序

文件一 % THIS PROGRAM IS FOR IMPLEMENTATION OF DISCRETE TIME PROCESS EXTENDED KALMAN FILTER % FOR GAUSSIAN AND LINEAR STOCHASTIC DIFFERENCE EQUATION. % By (R.C.R.C.R),SPLABS,MPL. % (17 JULY 2005). % Help by Aarthi Nadarajan is acknowledged. % (drawback of EKF is when nonlinearity is high, we can extend the % approximation taking additional terms in Taylor's series). clc; close all; clear all; Xint_v = [1; 0; 0; 0; 0]; wk = [1 0 0 0 0]; vk = [1 0 0 0 0]; for ii = 1:1:length(Xint_v) Ap(ii) = Xint_v(ii)*2; W(ii) = 0; H(ii) = ‐sin(Xint_v(ii)); V(ii) = 0; Wk(ii) = 0; end Uk = randn(1,200); Qu = cov(Uk); Vk = randn(1,200); Qv = cov(Vk); C = [1 0 0 0 0]; n = 100; [YY XX] = EKLMNFTR1(Ap,Xint_v,Uk,Qu,Vk,Qv,C,n,Wk,W,V); for it = 1:1:length(XX) MSE(it) = YY(it) ‐ XX(it); end tt = 1:1:length(XX); figure(1); subplot(211); plot(XX); title('ORIGINAL SIGNAL'); subplot(212); plot(YY); title('ESTIMATED SIGNAL'); figure(2); plot(tt,XX,tt,YY); title('Combined plot'); legend('original','estimated'); figure(3); plot(MSE.^2); title('Mean square error'); 子文件::function [YY,XX] = EKLMNFTR1(Ap,Xint_v,Uk,Qu,Vk,Qv,C,n,Wk,W,V); Ap(2,:) = 0; for ii = 1:1:length(Ap)‐1 Ap(ii+1,ii) = 1;

应用matlab对语音信号进行频谱分析及滤波.

数字信号处理 —综合实验报告 综合实验名称:应用MatLab对语音信号进行 频谱分析及滤波 系: 学生姓名: 班级: 学号: 成绩: 指导教师: 开课时间学年学期

目录 一.综合实验题目 (1) 二、综合实验目的和意义 (1) 2.1 综合实验目的 (1) 2.2 综合实验的意义 (1) 三.综合实验的主要内容和要求 (1) 3.2 综合实验的要求: (2) 四.实验的原理 (2) 4.1 数字滤波器的概念 (2) 4.2 数字滤波器的分类 (2) (1)根据单位冲激响应h(n)的时间特性分类 (2) 五.实验的步骤 (3) 下面对各步骤加以具体说明。 5.1语音信号的采集 (3) 5.2 语音信号的频谱分析; (3) 5.3 设计数字滤波器和画出其频率响应 (5) 5.3.1设计数字滤波器的性能指标: (5) 5.3.2 用Matlab设计数字滤波器 (6) 5.6 设计系统界面 (19) 六、心得体会 (20) 参考文献: (21)

一.综合实验题目 应用MatLab对语音信号进行频谱分析及滤波 二、综合实验目的和意义 2.1 综合实验目的 为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。 2.2 综合实验的意义 语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。 语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。 三.综合实验的主要内容和要求 3.1综合实验的主要内容: 录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;综合实验应完成的工作: (1)语音信号的采集; (2)语音信号的频谱分析;

卡尔曼滤波器及其简matlab仿真

卡尔曼滤波器及其简matlab仿真

卡尔曼滤波器及其简matlab仿真 一、卡尔曼滤波的起源 谈到信号的分析与处理,就离不开滤波两个字。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内,为了消除噪声,可以进行频域滤波。但在许多应用场合,需要直接进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但其所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对于随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。 1960年卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文A New Approach to Linear Filtering and Prediction Problems (线性滤波与预测问题的新方法),在这篇文章里一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态甚至能估计将来的状态即使并不知道模型的确切性质。 其基本思想是以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值。算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的储值的估计,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。

数据标准化.归一化处理

数据的标准化 在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”

和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。 一、Min-max 标准化 min-max标准化方法是对原始数据进行线性变换。设minA和maxA分别为属性A的最小值和最大值,将A的一个原始值x通过min-max标准化映射成在区间[0,1]中的值x',其公式为: 新数据=(原数据-极小值)/(极大值-极小值) 二、z-score 标准化 这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。 新数据=(原数据-均值)/标准差 spss默认的标准化方法就是z-score标准化。用Excel进行z-score标准化的方法:在Excel中没有现成的函数,需要自己分步计算,其实标准化的公式很简单。步骤如下: 求出各变量(指标)的算术平均值(数学期望)xi和标准差si ; .进行标准化处理:zij=(xij-xi)/si,其中:zij为标准化后的变量值;xij为实际变量值。 将逆指标前的正负号对调。标准化后的变量值围绕0上下波动,

应用MATLAB对信号进行频谱分析及滤波

应用MATLAB对信号进行频谱分析及滤波fs=input('please input the fs:');%设定采样频率 N=input('please input the N:');%设定数据长度 t=0:0.001:1; f=100;%设定正弦信号频率 %生成正弦信号 x=sin(2*pi*f*t); figure(1); subplot(211); plot(t,x);%作正弦信号的时域波形 axis([0,0.1,-1,1]); title('正弦信号时域波形'); z=square(50*t); subplot(212) plot(t,z) axis([0,1,-2,2]); title('方波信号时域波形');grid; %进行FFT变换并做频谱图 y=fft(x,N);%进行fft变换 mag=abs(y);%求幅值 f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; figure(2); subplot(211); plot(f,mag);%做频谱图 axis([0,1000,0,200]); title('正弦信号幅频谱图'); y1=fft(z,N);%进行fft变换 mag=abs(y1);%求幅值 f=(0:N-1)*fs/N;%横坐标频率的表达式为f=(0:M-1)*Fs/M; subplot(212); plot(f,mag);%做频谱图 axis([0,1000,0,200]); title('方波信号幅频谱图');grid; %求功率谱 sq=abs(y);

power=sq.^2; figure(3) subplot(211); plot(f,power); title('正弦信号功率谱');grid; sq1=abs(y1); power1=sq1.^2; subplot(212); plot(f,power1); title('方波信号功率谱');grid; %用IFFT恢复原始信号 xifft=ifft(y); magx=real(xifft); ti=[0:length(xifft)-1]/fs; figure(4); subplot(211); plot(ti,magx); axis([0,0.1,-1,1]); title('通过IFFT转换的正弦信号波形'); zifft=ifft(y1); magz=real(zifft); ti1=[0:length(zifft)-1]/fs; subplot(212); plot(ti1,magz); title('通过IFFT转换的方波信号波形');grid; please input the fs:1000 please input the N:1024

卡尔曼滤波入门简介及其算法MATLAB实现代码

卡尔曼滤波入门: 卡尔曼滤波是用来进行数据滤波用的,就是把含噪声的数据进行处理之后得出相对真值。卡尔曼滤波也可进行系统辨识。 卡尔曼滤波是一种基于统计学理论的算法,可以用来对含噪声数据进行在线处理,对噪声有特殊要求,也可以通过状态变量的增广形式实现系统辨识。 用上一个状态和当前状态的测量值来估计当前状态,这是因为上一个状态估计此时状态时会有误差,而测量的当前状态时也有一个测量误差,所以要根据这两个误差重新估计一个最接近真实状态的值。 信号处理的实际问题,常常是要解决在噪声中提取信号的问题,因此,我们需要寻找一种所谓有最佳线性过滤特性的滤波器。这种滤波器当信号与噪声同时输入时,在输出端能将信号尽可能精确地重现出来,而噪声却受到最大抑制。 维纳(Wiener)滤波与卡尔曼(Kalman)滤波就是用来解决这样一类从噪声中提取信号问题的一种过滤(或滤波)方法。 (1)过滤或滤波 - 从当前的和过去的观察值x(n),x(n-1),x(n-2),…估计当前的信号值称为过滤或滤波; (2)预测或外推 - 从过去的观察值,估计当前的或将来的信号值称为预测或外推; (3)平滑或内插 - 从过去的观察值,估计过去的信号值称为平滑或内插; 因此,维纳过滤与卡尔曼过滤又常常被称为最佳线性过滤与预测或线性最优估计。这里所谓“最佳”与“最优”是以最小均方误差为准则的。 维纳过滤与卡尔曼过滤都是解决最佳线性过滤和预测问题,并且都是以均方误差最小为准则的。因此在平稳条件下,它们所得到的稳态结果是一致的。然而,它们解决的方法有很大区别。 维纳过滤是根据全部过去的和当前的观察数据来估计信号的当前值,它的解是以均方误差最小条件下所得到的系统的传递函数H(z)或单位样本响应h(n)的形式给出的,因此更常称这种系统为最佳线性过滤器或滤波器。 而卡尔曼过滤是用前一个估计值和最近一个观察数据(它不需要全部过去的观察数据)来估计信号的当前值,它是用状态方程和递推的方法进行估计的,它的解是以估计值(常常是状态变量值)形式给出的。因此更常称这种系统为线性最优估计器或滤波器。 维纳滤波器只适用于平稳随机过程,而卡尔曼滤波器却没有这个限制。维纳过滤中信号和噪声是用相关函数表示的,因此设计维纳滤波器要求已知信号和噪声的相关函数。 卡尔曼过滤中信号和噪声是状态方程和量测方程表示的,因此设计卡尔曼滤波器要求已知状态方程和量测方程(当然,相关函数与状态方程和量测方程之间会存在一定的关系。卡尔曼过滤方法看来似乎比维纳过滤方法优越,它用递推法计算,不需要知道全部过去的数据,从而运用计算机计算方便,而且它可用于平稳和不平稳的随机过程(信号),非时变和时变的系统。 但从发展历史上来看维纳过滤的思想是40年代初提出来的,1949年正式以书的形式出版。卡尔曼过滤到60年代初才提出来,它是在维纳过滤的基础上发展起来的,虽然如上所述它比维纳过滤方法有不少优越的地方,但是最佳线性过滤问题是由维纳过滤首先解决的,维纳过滤的物理概念比较清楚,也可以认为卡尔曼滤波仅仅是对最佳线性过滤问题提出的一种新的算法。 卡尔曼滤波在数学上是一种统计估算方法,通过处理一系列带有误差的实际量测数据而得到的物理参数的最佳估算。例如在气象应用上,根据滤波的基本思想,利用前一时刻预报误差的反馈信息及时修正预报方程,以提高下一时刻预报精度。作温度预报一般只需要连续两个月的资料即可建立方程和递推关系。

卡尔曼滤波器及其简matlab仿真.

卡尔曼滤波器及其简matlab仿真 一、卡尔曼滤波的起源 谈到信号的分析与处理,就离不开滤波两个字。通常,信号的频谱处于有限的频率范围内,而噪声的频谱则散布在很广的频率范围内,为了消除噪声,可以进行频域滤波。但在许多应用场合,需要直接进行时域滤波,从带噪声的信号中提取有用信号。虽然这样的过程其实也算是对信号的滤波,但其所依据的理论,即针对随机信号的估计理论,是自成体系的。人们对于随机信号干扰下的有用信号不能“确知”,只能“估计”。为了“估计”,要事先确定某种准则以评定估计的好坏程度。 1960年卡尔曼发表了用递归方法解决离散数据线性滤波问题的论文A New Approach to Linear Filtering and Prediction Problems(线性滤波与预测问题的新方法),在这篇文章里一种克服了维纳滤波缺点的新方法被提出来,这就是我们今天称之为卡尔曼滤波的方法。卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态甚至能估计将来的状态即使并不知道模型的确切性质。 其基本思想是以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值。算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。 对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。 卡尔曼滤波不要求保存过去的测量数据,当新的数据到来时,根据新的数据和前一时刻的储值的估计,借助于系统本身的状态转移方程,按照一套递推公式,即可算出新的估值。卡尔曼递推算法大大减少了滤波装置的存储量和计算量,并且突破了平稳随机过程的限制,使卡尔曼滤波器适用于对时变信号的实时处理。 二、卡尔曼滤波的原理

MATLAB统计分析与应用:40个案例分析

MATLAB统计分析与应用:40个案例分析 ISBN:9787512400849 分类号:C819 /115 出版社:北京航空航天大学出版社 【内容简介】 本书从实际应用的角度出发,以大量的案例详细介绍了MA TLAB环境下的统计分析与应用。 本书主要内容包括:利用MA TLAB制作统计报告或报表;从文件中读取数据到MA TLAB;从MA TLAB中导出数据到文件;数据的平滑处理、标准化变换和极差归一化变换;生成一元和多元分布随机数;蒙特卡洛方法;参数估计与假设检验;Copula理论及应用实例;方差分析;基于回归分析的数据拟合;聚类分析;判别分析;主成分分析;因子分析;图像处理中的统计应用等。 本书可以作为高等院校本科生、研究生的统计学相关课程的教材或教学参考书,也可作为从事数据分析与数据管理的研究人员的参考用书。 【目录】 第1章利用MA TLAB生成Word和Excel文档 1.1 组件对象模型(COM) 1.1.1 什么是CoM 1.1.2 CoM接口 1.2 MA TLAB中的ActiveX控件接口技术 1.2.1 actxcontrol函数 1.2.2 actxcontrollist函数 1.2.3 actxcontrolselect函数 1.2.4 actxserver函数 1.2.5 利用MA TLAB调用COM对象 1.2.6 调用actxserver函数创建组件服务器 1.3 案例1:利用MA TLAB生成Word文档 1.3.1 调用actxserver函数创建Microsoft Word服务器 1.3.2 建立Word文本文档 1.3.3 插入表格 1.3.4 插入图片 1.3.5 保存文档 1.3.6 完整代码 1.4 案例2:利用MA TLAB生成Excel文档 1.4.1 调用actxserver函数创建Microsoft Excel服务器 1.4.2 新建Excel工作簿 1.4.3 获取工作表对象句柄 1.4.4 插入、复制、删除、移动和重命名工作表 1.4.5 页面设置 1.4.6 选取工作表区域 1.4.7 设置行高和列宽 1.4.8 合并单元格 1.4.9 边框设置 1.4.10 设置单元格对齐方式

(完整word版)扩展卡尔曼滤波算法的matlab程序

clear all v=150; %%目标速度 v_sensor=0;%%传感器速度 t=1; %%扫描周期 xradarpositon=0; %%传感器坐标yradarpositon=0; %% ppred=zeros(4,4); Pzz=zeros(2,2); Pxx=zeros(4,2); xpred=zeros(4,1); ypred=zeros(2,1); sumx=0; sumy=0; sumxukf=0; sumyukf=0; sumxekf=0; sumyekf=0; %%%统计的初值 L=4; alpha=1; kalpha=0; belta=2; ramda=3-L; azimutherror=0.015; %%方位均方误差rangeerror=100; %%距离均方误差processnoise=1; %%过程噪声均方差 tao=[t^3/3 t^2/2 0 0; t^2/2 t 0 0; 0 0 t^3/3 t^2/2; 0 0 t^2/2 t]; %% the input matrix of process G=[t^2/2 0 t 0 0 t^2/2 0 t ]; a=35*pi/180; a_v=5/100; a_sensor=45*pi/180; x(1)=8000; %%初始位置

y(1)=12000; for i=1:200 x(i+1)=x(i)+v*cos(a)*t; y(i+1)=y(i)+v*sin(a)*t; end for i=1:200 xradarpositon=0; yradarpositon=0; Zmeasure(1,i)=atan((y(i)-yradarpositon)/(x(i)-xradarpositon))+random('Normal',0,azimutherror,1,1); Zmeasure(2,i)=sqrt((y(i)-yradarpositon)^2+(x(i)-xradarpositon)^2)+random('Normal',0,rangeerror,1,1); xx(i)=Zmeasure(2,i)*cos(Zmeasure(1,i));%%观测值 yy(i)=Zmeasure(2,i)*sin(Zmeasure(1,i)); measureerror=[azimutherror^2 0;0 rangeerror^2]; processerror=tao*processnoise; vNoise = size(processerror,1); wNoise = size(measureerror,1); A=[1 t 0 0; 0 1 0 0; 0 0 1 t; 0 0 0 1]; Anoise=size(A,1); for j=1:2*L+1 Wm(j)=1/(2*(L+ramda)); Wc(j)=1/(2*(L+ramda)); end Wm(1)=ramda/(L+ramda); Wc(1)=ramda/(L+ramda);%+1-alpha^2+belta; %%%权值 if i==1 xerror=rangeerror^2*cos(Zmeasure(1,i))^2+Zmeasure(2,i)^2*azimutherror^2*sin(Zmeasure(1,i))^2; yerror=rangeerror^2*sin(Zmeasure(1,i))^2+Zmeasure(2,i)^2*azimutherror^2*cos(Zmeasure(1,i))^2; xyerror=(rangeerror^2-Zmeasure(2,i)^2*azimutherror^2)*sin(Zmeasure(1,i))*cos(Zmeasure(1,i)); P=[xerror xerror/t xyerror xyerror/t; xerror/t 2*xerror/(t^2) xyerror/t 2*xyerror/(t^2); xyerror xyerror/t yerror yerror/t;

基于Matlab的归一化二阶系统课程设计

Matlab 实训设计(一) 二阶系统变阻尼比的动态仿真系统的设计 一.设计一个二阶系统的变阻尼比的动态仿真系统 二.步骤 (1)程序功能描述 1. 典型二阶系统的传递函数为 ω ωωξ22 2 2)(n n n S s ++= Φ 2. 归一化二阶系统的单位阶跃响应 1、ζ=0(无阻尼)时,系统处于等幅振荡,超调量最大,为100%,并且系统发生不衰减的振荡,永远达不到稳态。 2、0<ζ<1(欠阻尼)时,系统为衰减振荡。为了获得满意的二阶系统的瞬态响应特性,通常阻尼比在0.4~0.8的范围内选择。这时系统在响应的快速性、稳定性等方面都较好。 3、在ζ=1(临界阻尼)及ζ>1(过阻尼)时,二阶系统的瞬态过程具有单调上升的特性,以ζ=1时瞬态过程最短。 (2)程序界面设计 图形界面中的grid on 、grid off 分别是网格和绘图框的打开和关闭按钮

(3)程序测试运行 在编辑框中+还可以输入如0:0.1:0.8的阻尼系数数组,这表示把0到0.8之间的长度以0.1为跨距等份,再以每点的数据得到响应曲线,上式就包含了 ze-ta=0、0.1、0.2···、0.8总共8个阻尼比下的响应曲线

三.控件属性设置 (1)String %显示在控件上的字符串 (2)Callback 回调函数 (3)enable 表示控件是否有效 (4)Tag 控件标记,用于标识控件 四.设计:实现如下功能的系统界面 (1)在编辑框中,可以输入表示阻尼比的标量成行数组、数值,并在按了Enter 键后,在轴上画出图形,坐标范围x[1,15],y[0,2]。 (2)在点击grid on或者grid off键时,在轴上显示或删除“网格线”。(3)在菜单[options]下,有两个下拉菜单[Box on]和[Box off],缺省值为off。(4)所设计界面和其上图形,都按比例缩放。 五.各个控件属性设置 (1)在图形窗中设置 Name 我的设计 Rize on %图窗可以缩放 Tag figure1 %生成handles. figure1 (2)在轴框中 Units normalizen Box off坐标轴不封闭 Tag axes1 XLim[0,15]%x范围 YLim[1,2]%y范围 (3)静态文件框1 fontsize 0.696 fritunits normalizen String“归一化二阶阶跃响应” Tag text1 Horizontalignment Center

根据MATLAB的加噪语音信号的滤波

《计算机仿真技术》 基于MATLAB的加噪语音信号的滤波学生姓名: 专业:电子信息工程 班级: 学号: 指导教师: 完成时间:2017年12月

一.滤波器的简述 在MATLAB环境下IIR数字滤波器和FIR数字滤波器的设计方法即实现方法,并进行图形用户界面设计,以显示所介绍迷你滤波器的设计特性。 在无线脉冲响应(IIR)数字滤波器设计中,先进行模拟滤波器的设计,然后进行模拟-数字滤波器转换,即采用脉冲响应不变法及双线性Z变化法设计数字滤波器,最后进行滤波器的频带转换。在有限脉冲响应(FIR)数字滤波器设计中,讨论了FIR线性相位滤波的特点和用窗口函数设计FIR数字滤波器两个问题。两类滤波器整个过程都是按照理论分析、编程设计、集体实现的步骤进行的。为方便分析直观者直观、形象、方便的分析滤波器的特性,创新的设计出图形用户界面---滤波器分析系统。整个系统分为两个界面,其内容主要包括四个部分:System(系统)、Analysis(分析)、Tool(工具)、Help(帮助)。 数字滤波在DSP中占有重要地位。数字滤波器按实现的网络结构或者从单位脉冲响应,分为IIR(无限脉冲响应)和FIR(有限脉冲响应)滤波器。如果IRR 滤波器和FIR滤波器具有相同的性能,那么通常IIR滤波器可以用较低的阶数获得高的选择性,执行速度更快,所有的存储单元更少,所以既经济又高效。二.设计要求 1.在matlab平台上录制一段语音信号; 2.完成语音信号的谱分析; 3.对语音信号进行加噪以及加噪后信号的谱分析; 4.选择合适的滤波器进行滤波,确定相关指标; 5.实现滤波过程,显示滤波后的结果,并进行谱分析。 三.实验内容与步骤 1、语音信号的录入

基于matlab声音信号的滤波去噪处理

基于matlab声音信号的滤波去噪处理 摘要 滤波器设计在数字信号处理中占有极其重要的地位FIR数字滤波器和IIR滤波器是滤波器设计的重要组成部分Matlab功能强大简单易学编程效率高深受广大科技工作者的欢迎特别是Matlab还具有信号分析工具箱不需具备很强的编程能力就可以很方便地进行信号分析处理和设计利用MATLAB信号处理工具箱可以快速有效地设计各种数字滤波器课题基于MATLAB有噪音语音信号处理的设计与实现综合运用数字信号处理的理论知识对加噪声语音信号进行时域频域分析和滤波通过理论推导得出相应结论再利用MATLAB作为编程工具进行计算机实现在设计实现的过程中使用窗函数法来设计FIR数字滤波器用巴特沃斯切比雪夫和双线性变法设计IIR数字滤波器并利用MATLAB作为辅助工具完成设计中的计算与图形的绘制通过对对所设计滤波器的仿真和频率特性分析可知利用MATLAB信号处理工具箱可以有效快捷地设计FIR和IIR数字滤波器过程简单方便结果的各项性能指标均达到指定要求 目录 摘要 ABSTRACT 绪论 11研究的目的和意义 12国内外同行的研究状况 13本课题的研究内容和方法语音信号去噪方法的研究 21去噪的原理 22去噪的方法去噪和仿真的研究 31语音文件在MATLAB平台上的录入与打开 32 原始语音信号频谱分析及仿真 33 加噪语音信号频谱分析及仿真 34 去噪及仿真 35 结合去噪后的频谱图对比两种方式滤波的优缺点总结致谢 参考文献 1绪论 11研究的目的和意义 语音信号的采集与分析技术是一门涉及面很广的交叉科学它的应用和发展与语音学声音测量学电子测量技术以及数字信号处理等学科紧密联系语音是人类获取信息的重要来源和利用信息的重要手段在信号传输过程中由于实验条件或各种其他主观或客观条件的原因语音处理系统都不可避免地要受到各种噪声的干扰噪声不但降低了语音质量和语音的可懂度而且还将导致系统性能的急剧恶化严重时使整个系统无法正常工作 MATLAB是由美国mathworks公司发布的主要面对科学计算可视化以及交互式程序设计的高科技计算环境它将数值分析矩阵计算科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中为科学研究工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案并在很大程度上摆脱了传统非交互式程序设计语言如CFortran的编辑模式代表了当今国际科学计算软件的先进水平其强大的数据处理能力可以极大程度上削弱噪声影响还原出真实的语音信号相符度在90以上 12 国内外同行研究现状 20世纪60年代中期形成的一系列数字信号处理的理论和算法如数字滤波器快速傅立叶变换FFT等是语音信号数字处理的理论和技术基础随着信息科学技术的

应用Matlab对信号进行频谱分析及滤波程序

完整的程序 %写上标题 %设计低通滤波器: [N,Wc]=buttord() %估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc); %设计Butterworth低通滤波器 [h,f]=freqz(); %求数字低通滤波器的频率响应 figure(2); % 打开窗口2 subplot(221); %图形显示分割窗口 plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图 title(巴氏低通滤波器''); grid; %绘制带网格的图像 sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数 subplot(222); plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形 xlabel('时间 (seconds)'); ylabel('时间按幅度'); SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换 w= %新信号角频率 subplot(223); plot()); %绘制叠加函数S经过低通滤波器以后的频谱图 title('低通滤波后的频谱图'); %设计高通滤波器 [N,Wc]=buttord() %估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc [a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器 [h,f]=freqz(); %求数字高通滤波器的频率响应 figure(3); subplot(221); plot()); %绘制Butterworth高通滤波器的幅频响应图 title('巴氏高通滤波器'); grid; %绘制带网格的图像 sf=filter(); %叠加函数S经过高通滤波器以后的新函数 subplot(222); plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形 xlabel('Time(seconds)'); ylabel('Time waveform'); w; %新信号角频率 subplot(223); plot()); %绘制叠加函数S经过高通滤波器以后的频谱图 title('高通滤波后的频谱图'); %设计带通滤波器 [N,Wc]=buttord([)

相关主题
文本预览
相关文档 最新文档