当前位置:文档之家› 语音短时傅里叶变换

语音短时傅里叶变换

语音短时傅里叶变换
语音短时傅里叶变换

音频信号的短时傅里叶变换

姓名:蔡冬学号:方向:自动装置与检测

一.试验目的:

1.熟悉掌握matlab软件的使用,以及对音频信号的时域及频域分析。

2.掌握短时傅里叶变换的意义和方法。

3.通过试验结果对比,加深对傅里叶变换的认识。

二.试验内容:

1.收集一段音频信号,以某一固定采样率进行分析,如采样率Fs=50000Hz。

2.对音频信号采用滑动窗进行短时傅里叶变换,窗宽frame_length=512,画出频谱图和时域图。

3.对音频信号直接傅里叶变换,画出频谱图和时域图。

4.结果比较分析,并得出结论。

三.试验步骤:

1、音频信号短时傅里叶变换的分析过程

音频信号时一个非平稳的信号,是非周期的,频谱随时间连续变化,所以不能直接傅里叶变换,所以短时分析是一个有效的解决办法。任何语音信号的分析和处理必须建立在“短时”的基础上,即进行“短时分析”,将语音信号分段来分析其特征参数。这是因为语音信号的特性随时间是缓慢变化的,可以假设在一短时间呢是不变化的,当做是一个准稳态的过程。

下面是具体的加窗、短时傅里叶变换的matlab程序:

[y,Fs,bits]=wavread('D:\');

y=y(:,1);

sound(y,Fs,bits);

sigLength=length(y);

Fs=50000;

d=100;%连续段的重叠长度

L=512;

k=L-d;

t=fix(sigLength/k);

frame_length=512;

r=(rectwin(frame_length));

for a=1:t

n1=(L-d)*(a-1)+1;

n2=(L-d)*(a-1)+frame_length;

s=y(n1:n2);

sf=fft(s'.*r',512 );

X1(n1:n2)=sf(1:frame_length);

end

SIZE=8000;

Y=zeros(SIZE,1);

Y=20*log10(abs(X1));

figure,plot(Y(1:4000));title('频谱图'); figure,plot(y);title('时域图');

图1.短时傅立叶变换的频谱图

图2.短时傅立叶变换的时域图

2.语音信号的直接傅里叶变换

[y,Fs,bits]=wavread('D:\');

y=y(:,1);

sound(y,Fs,bits);

figure, plot(abs(fft(y)));title('频谱图'); figure,plot(y);title('时域图');

图3.傅立叶变换的频谱图

图4.傅立叶变换的时域图四.试验结论:频谱图

1.(截断函数)窗函数会扰乱信号的特性。

2.通过将信号截断来表征信号时频普变化现象。

短时傅立叶变换试验

短时傅立叶变换试验 为了克服傅立叶变换的时频局部化方面的不足,也是为了对时域信号作局部分析,D.Gabor 于1946年提出了窗口傅立叶变换(简记为WFT )。 WFT 的公式形式 ()(,)()()j w t R G f w b f t w t b e d t -=-?()(,)()()j w t R G f w b f t w t b e d t -=-? 其中,实函数w(t)为是时窗函数,窗函数w(t)具有较强的衰减性,所以要精心选择窗函数。 下面是一个短时傅立叶变换的代码程序 function timefreq(x,Nw,window) % 待分析信号,行向量,Nw 时窗宽度 subplot(2,2,1); plot(real(x));%描绘待分析信号 X=fft(x);%快速傅里叶变换 X=fftshift(X);%调整0频位置 subplot(2,2,2); plot(abs(X));%描绘幅度谱 Lap=Nw/2;%重叠宽度 Tn=(length(x)-Lap)/(Nw-Lap);%计算分段数目 nfft=2^ceil(log2(Nw));%做fft 的点数 TF=zeros(Tn,nfft);%时频矩阵 for i=1:Tn if(strcmp(window,'rec')) Xw=x((i-1)*10+1:i*10+10);%加窗矩形处理 elseif(strcmp(window,'Hamming')) Xw=x((i-1)*10+1:i*10+10).*Hamming(Nw)';%加hamming 处理 elseif(strcmp(window,'Blackman')) Xw=x((i-1)*10+1:i*10+10).*Blackman(Nw)';%加black 处理 elseif(strcmp(window,'Gauss')) Xw=x((i-1)*10+1:i*10+10).*Gauss(Nw)';%加Gauss 处理 else return; end temp=fft(Xw,nfft);%求fft temp=fftshift(temp);%调整0频位置 TF(i,:)=temp;%保存分段fft 结果 end %绘制时频分析结果 subplot(2,2,3); fnew=((1:nfft)-nfft/2)/nfft; tnew=(1:Tn)*Lap; [F,T]=meshgrid(fnew,tnew); mesh(T,F,abs(TF)); xlabel('n');ylabel('w');zlabel('Gf');

短时傅里叶变换matlab程序

function [Spec,Freq]=STFT(Sig,nLevel,WinLen,SampFreq) %计算离散信号的短时傅里叶变换; % Sig 待分析信号; % nLevel 频率轴长度划分(默认值512); % WinLen 汉宁窗长度(默认值64); % SampFreq 信号的采样频率(默认值1); if (nargin <1), error('At least one parameter required!'); end; Sig=real(Sig); SigLen=length(Sig); if (nargin <4), SampFreq=1; end if (nargin <3), WinLen=64; end if (nargin <2), nLevel=513; end nLevel=ceil(nLevel/2)*2+1; WinLen=ceil(WinLen/2)*2+1; WinFun=exp(-6*linspace(-1,1,WinLen).^2); WinFun=WinFun/norm(WinFun); Lh=(WinLen-1)/2; Ln=(nLevel-1)/2; Spec=zeros(nLevel,SigLen); wait=waitbar(0,'Under calculation,please wait...'); for iLoop=1:SigLen, waitbar(iLoop/SigLen,wait); iLeft=min([iLoop-1,Lh,Ln]); iRight=min([SigLen-iLoop,Lh,Ln]); iIndex=-iLeft:iRight; iIndex1=iIndex+iLoop; iIndex2=iIndex+Lh+1; Index=iIndex+Ln+1; Spec(Index,iLoop)=Sig(iIndex1).*conj(WinFun(iIndex2)); end; close(wait); Spec=fft(Spec); Spec=abs(Spec(1:(end-1)/2,:));

MATLAB实验傅里叶分析

MATLAB实验傅里叶分析

实验七 傅里叶变换 一、实验目的 傅里叶变换是通信系统、图像处理、数字信号处理以及物理学等领域内的一种重要的数学分析工具。通过傅里叶变换技术可以将时域上的波形分 布变换为频域上的分布,从而获得信号的频谱特性。MATLAB 提供了专门的函数fft 、ifft 、fft2(即2维快速傅里叶变换)、ifft2以及fftshift 用于实现对信号的傅里叶变换。本次实验的目的就是练习使用fft 、ifft 以及fftshift 函数,对一些简单的信号处理问题能够获取其频谱特性(包括幅频和相频特性)。 二、实验预备知识 1. 离散傅里叶变换(DFT)以及快速傅里叶变换(FFT)简介 设x (t )是给定的时域上的一个波形,则其傅里叶变换为 2()() (1)j ft X f x t e dt π∞--∞=? 显然X ( f )代表频域上的一种分布(波形),一般来说X ( f )是复数。而傅里叶逆变换定义为: 2()() (2)j ft x t X f e df π∞-∞ =?

因此傅里叶变换将时域上的波形变换为频域上的波形,反之,傅里叶逆变换则将频域上的波形变换为时域上的波形。 由于傅里叶变换的广泛应用,人们自然希望能够使用计算机实现傅里叶变换,这就需要对傅里叶变换(即(1)式)做离散化处理,使 之符合电脑计算的特征。另外,当 把傅里叶变换应用于实验数据的分 析和处理时,由于处理的对象具有 离散性,因此也需要对傅里叶变换 进行离散化处理。而要想将傅里叶 变换离散化,首先要对时域上的波 形x (t )进行离散化处理。采用一个 时域上的采样脉冲序列: δ (t -nT ), n = 0, 1, 2, …, N -1; 可以实现上述目的,如图所示。其中N 为采样点数,T 为采样周期;f s = 1/T 是采样频率。注意采样时,采样频率f s 必须大于两倍的信号频率(实际是截止频率),才能避免混迭效应。 接下来对离散后的时域波形()()()(x t x t t n T x n T δ= -=的傅里叶变换()X f 进行离散处理。与上述做法类 似,采用频域上的δ脉冲序列: x (t δ x (t )δ t t t

傅里叶变换matlab代码

%傅里叶变换 clc;clear all;close all; tic Fs=128;%采样频率,频谱图的最大频率 T=1/Fs;%采样时间,原始信号的时间间隔 L=256;%原始信号的长度,即原始离散信号的点数 t=(0:L-1)*T;%原始信号的时间取值范围 x=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180)+3*cos(2*pi*30*t-90*pi/ 180); z=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180); z1=6*cos(2*pi*30*t-90*pi/180); z1(1:L/2)=0; z=z+z1; y=x;%+randn(size(t)); figure; plot(t,y) title('含噪信号') xlabel('时间(s)') hold on plot(t,z,'r--') N=2^nextpow2(L);%N为使2^N>=L的最小幂 Y=fft(y,N)/N*2; Z=fft(z,N)/N*2;%快速傅里叶变换之后每个点的幅值是直流信号以外的原始信号幅值的N/2倍(是直流信号的N倍) f=Fs/N*(0:N-1);%频谱图的频率取值范围 A=abs(Y);%幅值 A1=abs(Z); B=A; %让很小的数置零. B1=A1; A(A<10^-10)=0; % A1(A1<10^-10)=0; P=angle(Y).*A./B; P1=angle(Z).*A1./B1; P=unwrap(P,pi);%初相位值,以除去了振幅为零时的相位值 P1=unwrap(P1,pi); figure subplot(211) plot(f(1:N/2),A(1:N/2))%函数ffs返回值的数据结构具有对称性,因此只取前一半 hold on plot(f(1:N/2),A1(1:N/2),'r--') title('幅值频谱')

傅里叶变换

研究生课程论文(作业)封面 ( 2014 至 2015 学年度第 1 学期) 课程名称:__________________ 课程编号:__________________ 学生姓名:__________________ 学号:__________________ 年级:__________________ 提交日期:年月日 成绩:__________________ 教师签字:__________________ 开课---结课:第周---第周 评阅日期:年月日 东北农业大学研究生部制

积分变换在工程上的应用 摘要:在现代数学中,傅里叶变换是一种非常重要的积分变换,且在数字信号处理中有着广泛的应用。本文首先介绍了傅里叶变换的基本概念、性质及发展情况;其次,详细介绍了分离变数法及积分变换法在解数学物理方程中的应用,并在分离变数法中对齐次方程及非齐次方程进行了区分。傅里叶变换在不同的领域有不同的形式,诸如现代声学,语音通讯,声纳,地震,核科学,乃至生物医学工程等信号的研究发挥着重要的作用。 关键词:傅里叶变换;偏微分方程;数字信号处理 1 概要介绍 积分变换无论在数学理论或其应用中都是一种非常有用的工具。最重要的积分变换有傅里叶变换、拉普拉斯变换。由于不同应用的需要,还有其他一些积分变换,其中应用较为广泛的有梅林变换和汉克尔变换,它们都可通过傅里叶变换或拉普拉斯变换转化而来。傅里叶变换的典型用途是将信号分解成幅值分量和频率分量。傅里叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅里叶反变换将这些频域信号转换成时域信号。要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。最初傅里叶分析是作为热过程的解析分析的工具被提出的。 1.傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。最初傅里叶分析是作为热过程的解析分析的工具被提出的。——(1) 2.傅里叶变换的逆变换容易求出,而且形式与正变换非常类似。 3.正弦基函数是微分运算的本征函数,从而使得线性微分方程的求解可以转化为常系数的代数方程的求解。在线性时不变的物理系统内,频率是个不变的性质,从而系统对于复杂激励的响应可以通过组合其对不同频率正弦信号的响应来获取。 ()()()()()()?? ? ??-++=-? ? ∞ +∞ +∞ -.,200,]cos [1 其它连续点处, 在t f t f t f t f d d t f ωττωτπ 当()t f 满足一定条件时,在()t f 的连续点处有:

线性调频信号短时傅里叶变换MATLAB

%%%%%%%%%% 线性调频信号%%%%%%%%%%%%%%%%%%%%%%%%%% clear all k=50; fs=250; n=0:1000-1; x=exp(j*pi*k*(n/fs).^2); subplot(221); plot(n/fs,real(x)); title('线性调频信号'); xlabel('时间'); ylabel('振幅'); %%%%%%%%%%%%%% 线性调频信号频谱%%%%%%%%%%%%%%%%%%%%%%%%% P=fft(x); subplot(222); plot(n/length(n)*fs,abs(P)); title('线性调频信号频谱'); xlabel('频率'); ylabel('振幅'); %%%%%%%%%%%%%%% 短时傅立叶变换%%%%%%%%%%%%%%%%%%%%%%% N=40; NFFT=512; N1=round((1000-N)*2/N+1); w=gausswin(N); %w=hanning(N); %w=rectwin(N); %w=hamming(N); %w=blackman(N); w=rot90(w); STFT=zeros(N1,NFFT); for i=1:N1; xt=x((i-1)*N/2+1:(i-1)*N/2+N); xt=xt.*w; %加高斯窗 STFT(i,:)=fft(xt,NFFT); end fn=(1:NFFT)*fs/NFFT; tn=(1:N1)*N/2/fs; [F,T]=meshgrid(fn,tn); subplot(223); mesh(F,T,abs(STFT)); title('STFT'); xlabel('频率'); ylabel('时间');

短时傅里叶变换

短时距傅里叶变换(英文:short-time Fourier transform, STFT,又称short-term Fourier transform)是和傅里叶变换相关的一种数学变换关系,用以决定时变信号其局部段落之弦波成份的频率与相位。 简单来说,在连续时间的例子,一个函数可以先乘上仅在一段时间不为零的窗函数(window function)再进行一维的傅里叶变换。再将这个窗函数沿着时间轴挪移,所得到一系列的傅里叶变换结果排开则成为二维表象。数学上,这样的操作可写为: 其中w(t)是窗函数,通常是翰氏窗函数(Hann window)或高斯函数的“丘型”分布,中心点在零,而x(t)是待变换的信号。X(τ,ω)本质上是x(t)w(t?τ)的傅里叶变换,乃一个复函数代表了信号在时间与频率上的强度与相位。 短时傅里叶变换(STFT,short-time Fourier transform,或 short-term Fourier transform))是和傅里叶变换相关的一种数学变换,用以确定时变信号其局部区域正弦波的频率与相位。 它的思想是:选择一个时频局部化的窗函数,假定分析窗函数g(t)在一个短时间间隔内是平稳(伪平稳)的,移动窗函数,使f(t)g(t)在不同的有限时间宽度内是平稳信号,从而计算出各个不同时刻的功率谱。短时傅里叶变换使用一个固定的窗函数,窗函数一旦确定了以后,其形状就不再发生改变,短时傅里叶变换的分辨率也就确定了。如果要改变分辨率,则需要重新选择窗函数。短时傅里叶变换用来分析分段平稳信号或者近似平稳信号犹可,但是对于非平稳信号,当信号变化剧烈时,要求窗函数有较高的时间分辨率;而波形变化比较平缓的时刻,主要是低频信号,则要求窗函数有较高的频率分辨率。短时傅里叶变换不能兼顾频率与时间分辨率的需求。短时傅里叶变换窗函数受到W.Heisenberg不确定准则的限制,时频窗的面积不小于2。这也就从另一个侧面说明了短时傅里叶变换窗函数的时间与频率分辨率不能同时达到最优。

MAtlab傅里叶变换实验报告

M A t l a b傅里叶变换实 验报告 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

班级信工142 学号 22 姓名何岩实验组别 实验日期室温报告日期成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 1.求信号的离散时间傅立叶变换并分析其周期性和对称性; 给定正弦信号x(t)=2*cos(2*pi*10*t),fs=100HZ,求其DTFT。(a)代码: f=10;T=1/f;w=-10::10; t1=0::1;t2=0::1; n1=-2;n2=8;n0=0;n=n1::n2; x5=[n>=]; x1=2*cos(2*f*pi*t1); x2=2*cos(2*f*pi*t2); x3=(exp(-j).^(t2'*w)); x4=x2*x3; subplot(2,2,1);plot(t1,x1); axis([0 1 *min(x2) *max(x2)]); xlabel('x(n)');ylabel('x(n)'); title('原信号x1'); xlabel('t');ylabel('x1'); subplot(2,2,3);stem(t2,x2); axis([0 1 *min(x2) *max(x2)]); title('原信号采样结果x2'); xlabel('t');ylabel('x2'); subplot(2,2,2);stem(n,x5); axis([0 1 *min(x5) *max(x5)]); xlabel('n');ylabel('x2'); title('采样函数x2'); subplot(2,2,4);stem(t2,x4); axis([0 1 +*min(x4) *max(x4)]); xlabel('t');ylabel('x4'); title('DTFT结果x4'); (b)结果: 2.用以下两个有限长序列来验证DTFT的线性、卷积和共轭特性;

短时傅里叶变换的有关资料

短时傅里叶变换短时傅里叶变换(STFT,short-time Fourier transform,或short-term Fourier transform))是和傅里叶变换相关的一种数学变换,用以确定时变信号其局部区域正弦波的频率与相位。它的思想是:选择一个时频局部化的窗函数,假定分析窗函数g(t)在一个短时间间隔内是平稳(伪平稳)的,移动窗函数,使f(t)g(t)在不同的有限时间宽度内是平稳信号,从而计算出各个不同时刻的功率谱。短时傅里叶变换使用一个固定的窗函数,窗函数一旦确定了以后,其形状就不再发生改变,短时傅里叶变换的分辨率也就确定了。如果要改变分辨率,则需要重新选择窗函数。短时傅里叶变换用来分析分段平稳信号或者近似平稳信号犹可,但是对于非平稳信号,当信号变化剧烈时,要求窗函数有较高的时间分辨率;而波形变化比较平缓的时刻,主要是低频信号,则要求窗函数有较高的频率分辨率。短时傅里叶变换不能兼顾频率与时间分辨率的需求。短时傅里叶变换窗函数受到W.Heisenberg不确定准则的限制,时频窗的面积不小于2。这也就从另一个侧面说明了短时傅里叶变换窗函数的时间与频率分辨率不能同时达到最优。 短时距傅里叶变换 维基百科,自由的百科全书 汉漢▼

[编辑]与傅里叶转换在概念上的区别 将信号做傅里叶变换后得到的结果,并不能给予关于信号频率随时间改变的任何信息。以下的例子作为说明: 傅里叶变换后的频谱和短时距傅里叶转换后的结果如下: 傅里叶转换后, 横轴为频率(赫兹) 短时距傅里叶转换, 横轴为时间( 秒 ) , 纵轴 为频率(赫兹) 由上图可发现,傅里叶转换只提供了有哪些频率成份的信息,却没有提供时间信息;而短时傅里叶转换则清楚的提供这两种信息。这种时频分析的方法有利于频率会随着时间改变的信号(例如:音乐信号、语音信号等)分析。 [编辑]定义 [编辑]数学定义 简单来说,在连续时间的例子,一个函数可以先乘上仅在一段时间不为零的窗函数再进行一维的傅里叶变换。再将这个窗函数沿着时间轴挪移,所得到一系列的傅里叶变换结果排开则成为二维表象。数学上,这样的操作可写为: 另外也可用角频率来表示:

连续时间信号傅里叶级数分析及MAtlAB实现

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 连续时间信号傅里叶级数分析及MATLAB实现 初始条件: MATLAB 6.5 要求完成的主要任务: 深入研究连续时间信号傅里叶级数分析的理论知识,利用MA TLAB强大的图形处理功能,符号运算功能以及数值计算功能,实现连续时间周期信号频域分析的仿真波形。 1.用MATLAB实现周期信号的傅里叶级数分解与综合。 2.用MATLAB实现周期信号的单边频谱及双边频谱。 3.用MATLAB实现典型周期信号的频谱。 4.撰写《MATLAB应用实践》课程设计说明书。 时间安排: 学习MATLAB语言的概况第1天 学习MATLAB语言的基本知识第2、3天 学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天 课程设计第6-9天 答辩第10天 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要................................................................................................................................................ I Abstract .......................................................................................................................................... II 绪论. (1) 1 MATLAB简介 (2) 1.1 MATLAB语言功能 (2) 1.2 MATLAB语言特点 (2) 2 傅里叶级数基本原理概要 (4) 2.1 周期信号的傅里叶分解 (4) 2.2 三角形式和指数形式傅里叶级数及各系数间的关系 (4) 2.3 周期信号的频谱 (5) 3 用MATLAB实现周期信号的傅立叶级数分解与综合 (6) 3.1 合成波形与原波形之间的关系 (6) 3.2 吉布斯现象 (6) 4 用MATLAB实现周期信号的单边频谱及双边频谱。 (8) 4.1 单边,双边(幅度,相位)频谱及其关系 (8) 4.1.1单边,双边(幅度,相位) (8) 4.1.2 单边,双边频谱关系 (9) 4.2以单边幅度频谱为例,研究脉冲宽度与频谱的关系 (10) 4.3以单边幅度频谱为例,研究脉冲周期与频谱的关系 (11) 5用MATLAB实现典型周期信号的频谱 (13) 5.1 周期方波脉冲频谱的MATLAB实现 (13) 5.2 周期三角波脉冲频谱的MATLAB 实现 (14) 6 小结及心得体会 (17) 参考文献 (18) 附录: (19)

傅里叶变换matlab代码

傅里叶变换m a t l a b代 码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

%傅里叶变换 clc;clear all;close all; tic Fs=128;%采样频率,频谱图的最大频率 T=1/Fs;%采样时间,原始信号的时间间隔 L=256;%原始信号的长度,即原始离散信号的点数 t=(0:L-1)*T;%原始信号的时间取值范围 x=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180)+3*cos(2*pi*30*t-90*pi/180); z=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180); z1=6*cos(2*pi*30*t-90*pi/180); z1(1:L/2)=0; z=z+z1; y=x;%+randn(size(t)); figure; plot(t,y) title('含噪信号') xlabel('时间(s)') hold on plot(t,z,'r--')

N=2^nextpow2(L);%N为使2^N>=L的最小幂 Y=fft(y,N)/N*2; Z=fft(z,N)/N*2;%快速傅里叶变换之后每个点的幅值是直流信号以外的原始信号幅值的N/2倍(是直流信号的N倍) f=Fs/N*(0:N-1);%频谱图的频率取值范围 A=abs(Y);%幅值 A1=abs(Z); B=A; %让很小的数置零. B1=A1; A(A<10^-10)=0; % A1(A1<10^-10)=0; P=angle(Y).*A./B; P1=angle(Z).*A1./B1; P=unwrap(P,pi);%初相位值,以除去了振幅为零时的相位值 P1=unwrap(P1,pi); figure subplot(211) plot(f(1:N/2),A(1:N/2))%函数ffs返回值的数据结构具有对称性,因此只取前一半 hold on

短时傅里叶变换及其谱图分析

西南交通大学峨眉校区 (作业小论文) 工程测试技术课程设计 短时傅里叶变换及其谱图分 姓名:xxxx 学号:2wwwww 班级:wwww 专业:工程机械 2013.03.20

短时傅里叶变换及其谱图分析 摘要:本文讨论了有噪信号的短时傅里叶变换STFT及其谱围.分析和仿真结果表明,受 白噪声污染的信号的STFT可以无偏估计原信号的STFT,而其谱图可以对愿信号的谱图作有偏 估计,估计方差是有限的,且是时间和频率的函数.在短窗的情况下,求得了该方差上限的 近似表示. 关键词:短时傅里叶变换谱图噪声污染信号估计 1.前言 信号的短时傅里叶变换STFT是最早提出的一种时。频二维表示方法,它采用加窗的复正 弦作为基函数,也称为加窗傅里叶变换。由于它采用单一的分析窗处理所有频率分量,在时- 频平面内所有点上的分辨率是相同的,因而适合于准平稳信号的处理。STFT 简单易实现,许 多联合时.频分析的应用都是由它开始的。尽管STFT按定义属于线性变换,但在各种实际应 用中常采用它的能谱分布表示方法,这就是基于短时傅里叶变换的谱图Spectrogram)表示。 谱图定义为STFT的模平方,它是二次型时.频分布,尽管不满足时一频边缘条件,但可以认为 是信号能量在时.频平面上的分布。谱图已经在信号检测,语音处理等方面得到了广泛应用 [1Ⅱ2】。 谱图具有非线性性质,对于多分量信号将产生类似于Wigner分布中的交叉项干扰,从而 引入了模糊,影响信号分析结果。在利用谱图对信号的谱估计中,加性噪声的影响使信号具有 了多分量特性.可能使得估计产生较大偏差。本文就确定性信号受自噪声污染后的STFT及其 谱图的最小方差估计问题进行了分析。文中第二部分做了理论推导,求得了有噪信号的sTFT 及其谱图的均值和方差,第三部分对短窗的情况作了近似分析,最后给出了一例简单的仿真结 果。 2.傅立叶变换的提出

MATLAB的离散傅里叶变换的仿真

应用MATLAB对信号进行频谱分析及滤波 设计目的 要求学生会用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。 一、设计要求 1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图; 2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明; 3、绘制三种信号的均方根图谱; 4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。 二、系统原理 用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行频谱分析的信号是模拟信号和时域离散信号。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。 x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为: N?1?2?kn)(nx j?W W NN e?0?n N X(k)=DFT[x(n)]=,k=0,1,...,N-1N?11?kn?)(WXk N N0?n x(n) =IDFT[X(k)]= 逆变换:,k=0,1,...,N-1 但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。本实验就是采用FFT,IFFT对信号进行谱分析。 三、程序设计 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;

用Matlab实现快速傅立叶变换

用Matlab实现快速傅立叶变换 FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。 虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。 现在就根据实际经验来说说FFT结果的具体物理意义。一个模拟信号,经过ADC采样之后,就变成了数字信号。采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此啰嗦了。 采样得到的数字信号,就可以做FFT变换了。N个采样点,经过FFT之后,就可以得到N个点的FFT结果。为了方便进行FFT运算,通常N取2的整数次方。 假设采样频率为Fs,信号频率F,采样点数为N。那么FFT之后结果就是一个为N点的复数。每一个点就对应着一个频率点。这个点的模值,就是该频率值下的幅度特性。具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。而每个点的相位呢,就是在该频率下的信号的相位。第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。例如某点n所表示的频率为:Fn=(n-1)*Fs/N。由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。如果要提高频率分辨力,则必须增加采样点数,也即采样时间。频率分辨率和采样时间是倒数关系。 假设FFT之后某点n用复数a+bi表示,那么这个复数的模就是An=根号a*a+b*b,相位就是Pn=atan2(b,a)。根据以上的结果,就可以计算出n点(n≠1,且n<=N/2)对应的信号的表达式为:An/(N/2)*cos(2*pi*Fn*t+Pn),即2*An/N*cos(2*pi*Fn*t+Pn)。对于n=1点的信号,是直流分量,幅度即为A1/N。由于FFT结果的对称性,通常我们只使用前半部分的结果,即小于采样频率一半的结果。 下面以一个实际的信号来做说明。假设我们有一个信号,它含有2V的直流分量,频率为50Hz、相位为-30度、幅度为3V的交流信号,以及一个频率为75Hz、相位为90度、幅度为1.5V的交流信号。用数学表达式就是如下:S=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180)。式中cos 参数为弧度,所以-30度和90度要分别换算成弧度。我们以256Hz的采样率对这个信号进行采样,总共采样256点。按照我们上面的分析,Fn=(n-1)*Fs/N,我们可以知道,每两个点之间的间距就是1Hz,第n个点的频率就是n-1。我们的信号有3个频率:0Hz、50Hz、75Hz,应该分别在第1个点、第51个点、第76个点上出现峰值,其它各点应该接近0。实际情况如何呢?我们来看看FFT的结果的模值如图所示。

用Matlab对信号进行傅里叶变换实例

目录 用Matlab对信号进行傅里叶变换 (2) Matlab的傅里叶变换实例 (5) Matlab方波傅立叶变换画出频谱图 (7)

用Matlab对信号进行傅里叶变换 1.离散序列的傅里叶变换DTFT(Discrete Time Fourier Transform) 代码: 1 N=8; %原离散信号有8点 2 n=[0:1:N-1] %原信号是1行8列的矩阵 3 xn=0.5.^n; %构建原始信号,为指数信号 4 5 w=[-800:1:800]*4*pi/800; %频域共-800----+800 的长度(本应是无穷,高频分量很少,故省去) 6 X=xn*exp(-j*(n'*w)); %求dtft变换,采用原始定义的方法,对复指数分量求和而得 7 subplot(311) 8 stem(n,xn); 9 title('原始信号(指数信号)'); 10 subplot(312); 11 plot(w/pi,abs(X)); 12 title('DTFT变换') 结果: 分析:可见,离散序列的dtft变换是周期的,这也符合Nyquist采样定理的描述,连续时间信号经周期采样之后,所得的离散信号的频谱是原连续信号频谱的周期延拓。 2.离散傅里叶变换DFT(Discrete Fourier Transform)

与1中DTFT不一样的是,DTFT的求和区间是整个频域,这对 结果图:

分析:DFT只是DTFT的现实版本,因为DTFT要求求和区间无穷,而DFT只在有限点内求和。 3.快速傅里叶变换FFT(Fast Fourier Transform) 虽然DFT相比DTFT缩减了很大的复杂度,但是任然有相当大的计算量,不利于信息的实时有效处理,1965年发现的DFT解决了这一问题。 实现代码: 1 N=64; %原离散信号有8点 2 n=[0:1:N-1] %原信号是1行8列的矩阵 3 xn=0.5.^n; %构建原始信号,为指数信号 4 Xk=fft(xn,N); 5 subplot(221); 6 stem(n,xn); 7 title('原信号'); 8 subplot(212); 9 stem(n,abs(Xk)); 10 title('FFT变换') 效果图: 分析:由图可见,fft变换的频率中心不在0点,这是fft算法造成的,把fft改为fftshift可以将频率中心移到0点。

短时傅立叶变换的代码程序

— 短时傅立叶变换试验 为了克服傅立叶变换的时频局部化方面的不足,也是为了对时域信号作局部分析,于1946年提出了窗口傅立叶变换(简记为WFT )。 WFT 的公式形式 ()(,)()()jwt R Gf w b f t w t b e dt -=-?()(,)()()jwt R Gf w b f t w t b e dt -=-? 其中,实函数w(t)为是时窗函数,窗函数w(t)具有较强的衰减性,所以要精心选择窗函数。 下面是一个短时傅立叶变换的代码程序 function timefreq(x,Nw,window) % 待分析信号,行向量,Nw 时窗宽度 、 subplot(2,2,1); plot(real(x));%描绘待分析信号 X=fft(x);%快速傅里叶变换 X=fftshift(X);%调整0频位置 subplot(2,2,2); plot(abs(X));%描绘幅度谱 Lap=Nw/2;%重叠宽度 Tn=(length(x)-Lap)/(Nw-Lap);%计算分段数目 ' nfft=2^ceil(log2(Nw));%做fft 的点数 TF=zeros(Tn,nfft);%时频矩阵 for i=1:Tn if(strcmp(window,'rec')) Xw=x((i-1)*10+1:i*10+10);%加窗矩形处理 elseif(strcmp(window,'Hamming')) Xw=x((i-1)*10+1:i*10+10).*Hamming(Nw)';%加hamming 处理 elseif(strcmp(window,'Blackman')) ( Xw=x((i-1)*10+1:i*10+10).*Blackman(Nw)';%加black 处理 elseif(strcmp(window,'Gauss')) Xw=x((i-1)*10+1:i*10+10).*Gauss(Nw)';%加Gauss 处理 else return; end temp=fft(Xw,nfft);%求fft temp=fftshift(temp);%调整0频位置 ; TF(i,:)=temp;%保存分段fft 结果 end

短时傅里叶变换和小波变换

短时傅里叶变换和小波变换 吴桐 (西南交通大学峨眉校区机械工程系铁道车辆一班学号20116432)摘要:短时傅里叶变换(STFT,short-time Fourier transform,或 short-term Fourier transform))是和傅里叶变换相关的一种数学变换,用以确定时变信号其局部区域正弦波的频率与相位。小波变换与Fourier变换相比,是一个时间和频域的局域变换因而能有效地从信号中提取信息,通过伸缩和平移等运算功能对函数或信号进行多尺度细化分析(Multiscale Analysis),解决了Fourier变换不能解决的许多困难问题。 关键词:傅里叶变换;实质;缺陷;小波变换 0引言 傅立叶变换是信号分析技术的基础,它在分析平稳信号时起着至关重要的作用。傅立叶变换是一种全局的变换,只能获得信号的整个频谱,并不能反映某一局部时间内信号的频谱特性。在许多科学领域的实验和工程测量中,普遍存在着非平稳信号。针对传统的傅立叶变换无法表达信号的时频局域性质,人们提出了一系列新的信号分析理论,其中以短时傅立叶和小波变换应用最为广泛。 1傅里叶变换的实质与缺陷 傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来说,每个信号的加权应该都是零——但有密度上的差别。所以,傅里叶变换之后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度。对于周期信号来说,因为确实可以提取出某些频率的正弦波成分,所以其加权不为零——在幅度谱上,表现为无限大——但这些无限大显然是有区别的,所以我们用冲激函数表示已经说过,傅里叶变换是把各种形式的信号用正弦信号表示,因此非正弦信号进行傅里叶变换,会得到与原信号频率不同的成分——都是原信号频率的整数倍。这些高频信号是用来修饰频率与原信号相同的正弦信号,使之趋近于原信号的。所以说,频谱上频率最低的一个峰(往往是幅度上最高的),就是原信号频率。傅里叶变换把信号由时域转为频域,因此把不同频率的信号在时域上拼接起来进行傅里叶变换是没有意义的——实际情况下,隔一段时间采集一次信号进行变换,才能体现出信号在频域上随时间的变化。 基于傅里叶(Fourier)变换的信号频域表示,揭示了时间函数和频谱函数之间的内在联系,在传统的平稳信号分析和处理中发挥了极其重要的作用,很多理论研究和应用研究都把傅里叶变换当作最基本的经典工具来使用。但是傅里叶变换存在着严重的缺点:用傅里叶变换的方法提取信号频谱时,需要利用信号的全部时域信息,这是一种整体变换,缺少时域定位功能,因此必须对其加以改进。 信号的瞬时频率,表示了信号的谱峰在时间-频率平面上的位置及其随时间的变化情况,一般平稳信号的瞬时频率为常数,而非平稳信号的瞬时频率是时间t的函数。从傅里叶变换

短时傅里叶变换(STFT)及其逆变换实验报告

短时傅里叶变换(STFT)及其逆变换实验报告 1.实验目的 1、掌握STFT及其逆变换的matlab程序。 2、能够在STFT的基础上编写matlab函数实现低通滤波。 3、分析滤波前后的效果变化和使用不同的语音质量评估法对恢复的语音信 号的效果。 2.实验概述 基于STFT的程序,编写matlab的函数,实现低通滤波。测试2个48k的music和2个8k的speech的音频通过不同低通截止频率,分析低通滤波前后的音频频谱图的变化,分别使用主观语音质量评估法和客观语音质量评估法对恢复的语音测试得分,并分析得到的结果。 3.1实验环境和配置 本次实验在matlab2012a下运行,在matlab工具箱中有STFT变换的函数,STFT的逆变换调用的外部函数,另外需要给出主观和客观语音质量评估法的程序。 3.2实验步骤 1、在matlab工具箱中找到STFT变换的spectrogram.m函数,熟悉程序,尤其分析输入输出的变量,然后了解STFT逆变换的overlapadd.m函数。 2、通过调用STFT和逆变换的函数编写一个对语音信号进行STFT及其逆变换的matlab程序,并能够显示原始语音和恢复出的语音信号的波形。 3、在对语音信号进行STFT和逆变换的matlab程序的基础上编写低通滤波的函数,并且能够显示信号在低通滤波前后的频谱图。 4、在matlab程序中采用fwSNRseg对所有的语音进行客观语音质量评估,对48k的music采用PqevalAudio,8k的speech采用PESQ进行主观质量评估。 5、对2个48k的music和2个8k的speech的音频在1k、2k、4k、8k、12k 的低通截止频率下进行测试,观察滤波前后频谱图的变化,记录在不同截止频率

短时傅里叶变换及其应用

短时傅里叶变换及其应用 1 引言 传统傅里叶变换(Fourier Transform)分析方法已经在众多的领域内产生巨大影响。特别在1965年之后,快速傅里叶变换(FFT)算法的发现及改进使得离散傅里叶变换(DFT)实现了高效的数学实现,为数字信号处理技术应用于各种信号的实时处理创造了条件,加速了离散时间信号与系统分析技术的发展。但长久以来,人们也发现了傅里叶分析方法存在的一些不足,正如詹姆斯·凯塞(James F. Kaiser)曾经说过,“最多被使用的信号处理工具是FFT,而最多被滥用的信号处理工具也是FFT”。从20世纪80年代以来,数字信号处理技术在联合时频分析(Joint Time-frequency Analysis)方法方面有了很大的发展,各种联合时频分析方法得到了广泛的研究和应用,并逐渐形成了一套独特的理论体系。它的主要研究对象是非平稳信号或时变信号,主要的任务是描述信号的频谱含量是怎样随时间变化的。短时傅立叶变换(Short-time Fourier Transform,STFT)就是其中的一种最简单的联合时频分析方法。本文具体研究了短时傅里叶分析与综合,测不准原理,STFT 的分辨率,STFT的优缺点和窗函数的相关内容,最后借助MATLAB进行了相应的仿真并对仿真结果进行分析。 2 传统傅里叶变换 2.1 傅里叶变换的定义 连续时间信号s(t)的傅里叶变换(Fourier Transform)的数学表达式: (2-1)式(2-1)所表示的傅里叶正变换也称为傅里叶分析。 信号s(t)的傅里叶变换的逆变换的数学表达式: (2-2) - 1 -

式(2-2)所表示的傅里叶逆变换也称为傅里叶综合。 2.2 傅里叶变换的意义 热的传播与扩散现象是导致傅里叶研究成果的实际物理背景。由式(2-1)可以看出傅里叶变换是一种线性的积分变换,它能够将满足一定条件的某个函数表示成为一组复指数函数的积分。由式(2-2)可以看出S(jω)告诉我们将s(t)表示为不同频率正弦信号的线性组合(就是积分)所需要的信息。傅里叶变换及其逆变换可以将信号的时域描述和频域描述联系起来。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如离散时间傅里叶变换(DTFT)和离散傅里叶变换(DFT)。由式(2-2)容易求出傅里叶变换的逆变换,而且逆变换的形式与正变换非常类似。对用线性常系数微分方程表征的系统运用傅里叶变换的微分性质,这样可容易地求得系统的频率响应。另外在对线性时不变的物理可实现系统进行分析时,系统对于复杂激励的响应可以通过组合其对不同频率正弦信号的响应来获取。卷积定理还指出:傅里叶变换可以化简复杂的卷积运算为简单的乘积运算,从而提供了计算卷积的一种简单手段。离散傅里叶变换可以利用数字计算机快速的实现(FFT)。 基于以上良好的性质,傅里叶变换在物理学、数论、组合数学、信号处理、概率、统计、密码学、声学、光学等领域都有着广泛的应用。 2.3 傅里叶变换的缺陷 2.3.1 不适用于非平稳信号 若一个随机过程ξ(t)的任意的有限维分布函数与时间起点无关,也就是说,对于任意的正整数n和所有实数Δ,有 (2-3)则称该随机过程是在严格意义下的平稳随机过程,简称严平稳随机过程。该定义表明,平稳随机过程的统计特性不随时间的推移而改变。可见平稳随机过程具有简明的数字特征:均值与时间t无关,为常数;自相关函数只与时间间隔τ有关。实际中把同时满足这两个条件的过程定义为广义平稳随机过程[1]。如果一个信号不

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