常见信号的傅里叶变化.docx
《常见信号的傅里叶变化.docx》由会员分享,可在线阅读,更多相关《常见信号的傅里叶变化.docx(21页珍藏版)》请在冰豆网上搜索。
常见信号的傅里叶变化
常见信号的傅里叶变化
题目:
用MATLAB对常见信号的Fourier变换分析
姓名:
王聪
学号:
200606302036
专业:
电子信息科学与技术
年级:
2006级
院系:
物理与电子工程学院
完成日期:
2010年5月
指导教师:
潘孟美
号……………………………………………………6
3.2余弦信号……………………………………………………7
3.3频率突变信号………………………………………………8
3.4高斯信号……………………………………………………9
3.5随机序列…………………………………………………10
3.6利用窗函数对信号消燥……………………………………12
3.7对太阳黑子数据的分析…………………………………14
3.8对非平稳信号的时频分析…………………………………15
3.9男女声音的辨别和分析………………………………………16
4.结束语……………………………………………………17
4.1结论…………………………………………………17
4.2感言…………………………………………………18
5.参考文献……………………………………………………18
用MATLAB对常见信号的Fourier变换分析
作者:
王聪指导教师:
潘孟美
(海南师范大学物理与电子工程学院,海口,571158)
摘要:
MATLAB软件在多个研究领域都有着广泛的应用,其中,它的频谱分析设计功能很强,从而使信号处理变得十分简单、直观。
傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号,再利用傅立叶反变换将这些频域信号转换成时域信号。
应用MATLAB实现信号的谱分析和对信号消噪。
关键词:
傅里叶变换;MATLAB软件;信号消噪
Theanalysisofcommonsignal’sFouriertransformationbyMatlab
Author:
WangCongProfessorPanMengmei
(CollegeofPhysics&ElectronicEngineering,Hainannormaluniversity,Haikou,571158)
Abstract:
ThesoftwareofMATLABhasgotextensiveapplicationinseveralresearchesrealm.Amongthem,itsfrequencychartanalysisisverystrong,makingsignalhandledtobecomeverybrief,intuitionistc.Fouriertransformationmakestheoriginaltimedomainsignalwhoseanalysisisdifficulteasy,bytransformtingitintofrequencydomainsignalthatcanbetransformedintotimedomainsignalbyinversetransformationofFourier.UsingMatlabrealizessignalspectralanalysisandsignaldenoising.
Keyword:
Fouriertransformation,softwareofmatlab,signaldenoising
1.引言
MATLAB是一种面向科学与工程计算的高级语言,现在已成为国际公认的最优秀的科技应用软件,在世界范围内广为流传和使用。
Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件,被誉为“巨人肩上的工具”。
它使用方便、编程简单、语言简练、运算高效且内容丰富、函数库可以任意扩充,绘图简便,采用全新数据类型和面向对象编程技术,已广泛地运用于教学、科研和工程设计的各个领域,覆盖了通信、自动控制、信号处理、图像处理、化工、生命科学等科学技术领域。
随着Matlab的信号处理工具箱的推出,不需要很强的编程能力,就可以很方便地进行信号分析、处理和设计,Matlab已经成为信号处理应用中的分析和仿真设计的主要工具[1]。
1.Fourier变换
2.1周期Fourier变换
在我们生活的世界里充满了各种各样的周期现象,如日常生活中常见的昼夜更替、四季循环、温度气压等气象因素的反复变化、河水水位的周期性涨落、地面植物的岁月枯荣以及科学技术中诸如太阳活动的十一年周期起伏、地磁场的日变化、重力仪上所反映的固体潮、交流电、电磁波和机械振动等无一不是周期现象。
描述周期现象的最简单的周期函数是物理学上所说的谐波函数,它由正弦或余弦函数来表示
(2.1)
而所有函数都可以看做是不同频率的正弦或余弦函数的叠加。
下面介绍周期函数的傅里叶变换[2]。
将一个周期为T的函数分解为Fourier级数,其三角形式展开为:
(2.2)
2.2离散Fourier变换
但我们在数字资料处理中经常的不是一个函数,而是一个离散的序列。
与连续时间信号的分析类似,对于连续时间信号进行离散Fourier变换,一般可概括为时域采样,时域截断,频域采样三个步骤,最终导出离散傅立叶变换[3]对为:
n=0,1,2,…,N-1(2.3)
它通过连续傅立叶变换,将N个时域采样点与N个频域采样点联系起来。
2.3Fourier变换的意义
傅立叶变换原理表明:
任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。
而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。
和傅立叶变换算法对应的是反傅立叶变换算法。
该反变换从本质上说也是一种累加处理,这样就可以将单独改变的正弦波信号转换成一个信号。
因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。
最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。
傅里叶变换的应用领域广泛,谱估计就是对各种信号进行频谱分析,或将时间域信号转换为频率域信号进行处理。
例如通过对环境噪声的谱分析,可以确定主要频率成分,了解噪声的成因,找出降低噪声的对策;对振动信号的谱分析,可了解振动物体的特性,为设计或故障诊断提供资料和数据。
对于高保真音乐和电视这样的宽带信号转到频率域后极大多数能量集中在直流和低频部分,就可把频谱中的大部分成分滤去,从而压缩信号频带。
3.用MATLAB对常见信号的Fourier变换分析
3.1冲激信号[4]
冲激函数是最基本的函数,其傅里叶变换是系统函数,只要知道系统函数,那么通过这个系统的输出函数并可以确定。
在Matlab中产生冲激函数和其傅里叶变换的程序如下:
M=10;
T=10;
N=2^M;
dt=T/N;
n=0:
N-1;
t=n*dt;
w=zeros(size(t));
w(100:
105)=100;
subplot(211);
plot(t,w,'b','LineWidth',2.5);
title(‘冲激函数');
xlabel('t/s--->');ylabel('y/m');
Subplot(212);
W=fft(w);
W=fftshift(W);
plot(t,abs(W),'b','LineWidth',2.5);
title('冲激函数的傅里叶变换');
xlabel('w--->');ylabel('y/m');
其时域图像和频域图像如图1所示
图1冲激函数的时域和频谱
图像分析:
从图中可以看出,冲激信号的频率为0处的分量最大,然后向两端快速衰减,表明脉冲信号中实际占主导地位的其实是直流分量。
3.2余弦信号
我们已经知道,任何信号都可以分解成为不同频率的正或余弦信号的叠加,那么现在研究余弦信号的时域和频域特性[4]。
用Matlab可以产生余弦信号并分析其频谱的特性。
Matlab程序:
M=10;
N=2^M;
t=linspace(-10,10,N);
xcos=cos(3*t);
subplot(211)
plot(t,xcos);
title('余弦信号的时域图像');
xlabel('t/s');ylabel('y/m')
subplot(212)
plot(t,abs(fftshift(fft(xcos))));
title('余弦信号的频域图像')
xlabel('w/(rad/s)');ylabel('y/m')
余弦信号的时域图像与频域图像如图2所示
图2余弦函数的时域和频谱
3.3频率突变信号
频率突变信号在现实生活总很常见,下面用Matlab来产生频率突变信号[5]和分析其傅里叶变换。
Matlab程序:
M=8;
N=2^M;
t=linspace(-10,10,N);
s1=find(t<.0);
x(s1)=cos(2*pi*6*t(s1));
s2=find(t>=.0);
x(s2)=cos(2*pi*3*t(s2));
subplot(211);
plot(t,x);
title('频率突变信号');
xlabel('t/s');
ylabel('y/m')
subplot(212);
X=fft(x);
X=fftshift(X);
plot(t,abs(X);
title('频率突变信号的傅里叶变换图像');
xlabel('f/hz');
ylabel('y/m')
其图像如图3所示
图3频率突变信号的时域和频谱
图象分析:
频率突变信号的频率在3和5的位置对应的幅值特别高。
因此标记出这两个频谱峰值对应的频率分量,正好可以验证信号的频率成份。
3.4高斯信号
在信号中,常会伴随着噪声,而高斯噪声[5]是常见的噪声,研究它的特性对于消除噪声有很大的意义。
Matlab程序如下:
M=10;
N=2^M;
t=linspace(-10,10,N);
a=1/4;
g=exp(-a*t.^2);
subplot(211)
plot(t,g)
title('高斯信号的时域图像');
xlabel('t/s');
ylabel('y/m');
subplot(212)
G=fft(g);
G=fftshift(G);
plot(t,abs(G));
title('高斯信号的频域图像')
xlabel('f/Hz');
ylabel('y/m');
高斯信号的时域和频域图像如图3所示
图4高斯信号的时域和频域图像
图像分析:
这是一个正态分布函数,具有单峰性,归一性。
其傅立叶变换函数的图象中,只有频率为0的地方有极大的峰值,说明小概率时间发生的机会是极小的,越向原点,时间发生的可能性越大。
3.5随机序列
研究随机序列[4]有很大的意义,在数字信号的传输过程中,往往会产生噪声,而噪声并是随机序列,研究其特性对消除噪声有很大的意义
利用MATLAB很容易产生两类随机信号:
Rand(1,N)在区间[0,1]上产生N点均匀分布的随机序列
Randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列
例如下图表示点数为32点的均匀分布的随机序列与高斯随机序列,其Matlab仿真结果如图下所示,其中图3.1和图3.2分别表示序列一和序列二的时域和频域图像。
用Matlab产生的随即序列和其傅里叶变换的程序如下图所示
clearall;
N=32;
x_rand=rand(1,N);
x_randn=randn(1,N);
xn=0:
N-1;
figure
(1)
subplot(2,1,1);stem(xn,x_rand);title('系列1的时域图像')
subplot(2,1,2);stem(xn,abs(fftshift(fft(x_rand))));title('系列1的频域图像')
figure
(2)
subplot(2,1,1);stem(xn,x_randn);title('系列2的时域图像')
subplot(2,1,2);stem(xn,abs(fftshift(fft(x_randn))));title('系列2的频域图像')
图5.1序列一的时域和频域图像
图5.2序列二的时域和频域图像
3.6利用窗函数对信号消燥
信号在传输过程中,受到噪声的干扰,则在接收端得到的信号由于受到噪声的干扰,信号将难以辨识。
消燥的方法很多,下面介绍用窗函数对信号的消燥[6]。
使用窗函数可以控制频谱的主瓣宽度、旁瓣抑制度等参数,达到消除噪声对原信号的影响,更好地进行波形频谱分析。
而将窗函数与信号的时域波形或频谱进行相乘的过程,称为对信号做时域加窗或频域加窗。
Matlab信号处理工具箱中计算窗函数的指令是“window”.其用法是:
window
w=window(fhandle,n)
w=window(fhandle,n,winpot)
下面举例说明利用窗函数对信号的消燥的应用。
对一个50Hz,振幅为1的正弦波的合成波形进行频谱分析,要求分析的频率范围为0~100Hz,频率分辨率为1Hz。
根据分析的频率范围可以确定信号的时域采样率为为fs=200Hz,时间分辨率为T=1/fs=5ms。
而根据频率分辨率可以得到信号的时域截断长度为L=1/f=1s。
因此,对截断信号的采样点数为N=fs/f+1=201.现分别用矩形窗,海明窗和汉宁窗进行时域加窗,然后观察幅度谱曲线。
程序如下:
fs=200;%采样率
Delta_f=1;%频率分辨率
T=1/fs;%时间分辨率
M=256;
L=1/Delta_f;%时域截取长度
N=floor(fs/Delta_f)+1;%计算截断信号的采样点数
t=0:
T:
L;%截取时间段和采样时间点
freq=0:
Delta_f:
fs;%分析的频率范围和频率分辨率
f_t=(sin(2*pi*50*t)+0.7*sin(2*pi*75*t))+randn(1,M);%在截取范围内的分析的信号时域波形
f_t_rectwin=rectwin(N).*f_t;%时域加窗:
矩形窗
f_t_hamming=hamming(N).*f_t;%时域加窗:
海明窗
f_t_hann=hann(N).*f_t;%时域加窗:
汉宁窗
F_w_rectwim=T.*fft(f_t_rectwin,N)+eps;
%作N点DFT,乘以采样时间间隔T得到频谱
F_w_hamming=T.*fft(f_t_hamming,N)+eps;%加海明窗的频谱
F_w_hann=T.*fft(f_t_hann,N)+eps;%加汉宁窗的频谱
figure
(1);
subplot(2,2,1);plot(t,f_t);title('OriginalSignal');
subplot(2,2,2);plot(t,f_t_rectwim);title('rectwimWindowing');
subplot(2,2,3);plot(t,f_t_hamming);title('hammingWindowing');
subplot(2,2,4);plot(t,f_t_hann);title('hanningWindowing');
figure
(2);
subplot(3,1,1);semilogy(freq,abs(F_w_rectwin));
title('rectwimWindowingSpectrum');
axis([0,200,1e-4,1]);gridon;
subplot(3,1,2);semilogy(freq,abs(F_w_hamming));
title('rectwimWindowingSpectrum');
axis([0,200,1e-4,1]);gridon;
subplot(3,1,3);semilogy(freq,abs(F_w_hann));
title('rectwimWindowingSpectrum');
axis([0,200,1e-4,1]);gridon;
程序运行后,得出原始信号以及加窗后信号的时域、频域图分别如图6.1和6.2所示。
事实上,加矩形窗等价于截取时不作加窗处理。
从图中三种加窗后的幅度谱估计曲线来看,加海明窗和加汉宁窗后的估计精度都比矩形窗的要高。
图6.1信号的时域图
图6.2加窗后信号的频谱图
3.7对200年太阳黑子活动情况的分析
在Matlab工具箱中有200年太阳黑子的数据[7],利用这段数据对太阳黑子的规律进行分析
Matlab程序:
loadsunspot.dat%系统提供的历史数据,为20*2矩阵
year=sunspot(:
1);%分解所得得年份数据
wolfer=sunspot(:
2);%分解所得的活动数据。
subplot(211)
plot(year,wolfer);
title('太阳黑子数据')
subplot(212)
plot(year,abs(fftshift(fft(wolfer))))
title('太阳黑子的频域图像')
其结果如图7所示
图7太阳黑子的时域和频域图像
图像分析:
从上图结果可以得出:
对于太阳黑子的活动,在时域上没有十分明显的变化规律,而在其频域上却呈现出良好的突变特性,那么对其频谱的分析就可以很好的掌握太阳黑子活动的规律,对于人类的研究起了非常大的作用.
3.8对非平稳信号的时频分析
在现实生活中常常碰到一些非平稳信号[6],即这些信号的统计特征随时间变化而变化,其功率谱也是随时间变化的。
例如,语音信号就是非平稳的,显然在话音的辅音、元音以及间隙区间的统计特性是不同的,但是在某一个短的时间内(如一个元音区间)可以认为信号是近似平稳的。
为了寻求非平稳信号的功率谱,工程上将非平稳信号进行短时分段,然后对各段进行功率谱分析,最后将获得的这些功率谱按照时间的顺序排列起来,在时间、频率和功率谱密度这三个维度上考察费平稳信号的特征,这种方法称为时频分析技术。
MATLAB种提供了视频分析指令”specgram”。
下面举例说明视频分析方法。
在Matlab中自带了一段0.5秒的语音数据“mtlb.mat”供测试用。
用“load”指令调入语音数据后,首先通过声卡播放该段语音,然后用“specgram”指令进行视频分析,采样不同分析参数,最后通过三维图和视频二维色图的方式表达出来。
程序和程序结果如下:
loadmtlb.mat
sound(mtlb,Fs);%播放声音
[B,F,T]=specgram(mtlb,1024,Fs,[],0);
%时频分析,短时FFT点数为1024点,无混叠,默认窗函数
[x,y]=meshgrid(F,T);
figure
(1);waterfall(x,y,20*log10(abs(B')));colormap([000]);
%三维作图,作出时变功率谱
xlabel('Freq');ylabel('Time');zlabel('PSD');title('3-DSpectrogram');
figure
(2);specgram(mtlb,1024,Fs,[],0);
%通过时频图表达的时变功率谱,使用颜色表示谱的密度
figure(3);specgram(mtlb,512,Fs,kaiser(500,5),0);
%短时FFT点数为512点,无混叠,凯瑟窗情况
figure(4);specgram(mtlb,512,Fs,kaiser(500,5),475);
%短时FFT点数为512点,475点混叠,凯瑟窗情况
图8一段语音信号的分析
3.9男女声音的辨别
男女声音有什么区别,怎么样区别男女声音,下面用傅里叶变换分析一段男女声音,观察结果,并分析。
首先用录音器分别录两段男女声音音频,分别保存为woman.wav和man.wav。
在Matlab中用[Y,Fs]=wavread(‘filename’)即可直接读取。
Matlab程序
N=5000;
a=wavread('woman.wav',N);
b=wavread('man.wav',N);
A=fftshift(fft(a));
B=fftshift(fft(b));
subplot(223);
plot(abs(A));title('女生清唱傅里叶变换')
subplot(224);
plot(abs(B));title('男生清唱傅里叶变换')
subplot(221);
plot(a);title('女声')
subplot(222);
plot(b);title('男声')
运行结果如图9所示,
图9男女声频谱分析
由于男女声音音高不同,其频谱属于不同频段范围。
因此可以用上述方法才辨别男女声音。
如图所示,将直流分量至于中间,明显可以看出女声的高频分量多,男声的低频分量少。
由此可以得出,此分析结果正确。
4.结束语
4.1结论
本论文用Matlab产生不同的信号或下载常用的信号,并对其做傅里叶变换,将原来难以出来的时域信号转换成了易于分析的频域信号。
对分析常见信号的特性如噪声、声音、太阳黑子、男女声音等有很大的意义。
但是傅里叶变换也有其缺陷,它虽能得到信号的频谱即幅度和相位,有时只分析信号的这些参数远远还不够。
总的来说,傅里叶的变换的应用领域比较广泛,对于它的研究有很大的意义。
4.2感言
本学位论文是在我的指导老师潘孟美老师的亲切关怀和悉心指导下完成的。
她严肃的科学态度,严谨的治学精神,深深地感染和激励着我。
从课题的选择到毕业设计和论文的最终完成,潘老师都始终给予我细心的指导和不懈的支持。
大学期间,潘老师不仅在学业上给我以认真指导,同时也在思想、生活上给我以无微不至的关怀,使我不仅在学习上有许多知识的收获,同时也在思想和生活上有了很大的进步,日子过得十分充实。
在此谨向潘老师致以崇高的敬意和诚挚的谢意。
在此,我还要感谢在一起度过本科生活的06电本的同学,正是由于他们的帮助和支持,我才能克服困难和疑惑,直到本文的顺利完成。
从开始进入课题到论文的顺利完成,有很多可敬的师长、同学、朋友给了我热心的帮助,在这里请接受我诚挚的谢意!
参考文献:
[1]金延军,孟庆刚.MATLAB在数字信号处理中的应用[J].科技信息(学术版),2009,
(2),39—41.
[2]万永革,数字信号处理的MATLAB实现[M].科技出版社,2007.
[3]刘泉,阙大顺.数字信号处理原理与实现[M].电子工业出版社,2005.
[4]飞思科技产品研发中心.Matlab7辅