好文档 - 专业文书写作范文服务资料分享网站

信息工程概论-窗口傅里叶变换

天下 分享 时间: 加入收藏 我要投稿 点赞

.

信息工程概论作业

——窗口傅里叶变换

姓名:白子轩 学号:2130602008 班级:信计31

一、传统的傅里叶变换

我们都知道,信号分析中最重要的两个参数是时间和频率,而我们一般所得到的信号表

?(?)?示形式都是f?t?的形式,而我们可以通过传统的傅里叶变换f把信号变为频域表示f(?)。

????f(t)e?j?tdt,可以

但是,传统的傅里叶变换只对平稳的信号有用。对于非平稳的信号需要用时间和品率的联合函数来表示信号。因此,我们需要短时傅里叶变换,也就是窗口傅里叶变换。

二、窗口傅里叶变换

对于信号的频率是随时间变化的信号。为了获得它的随时间变化的频谱,最采用的处理办法是加窗技术对信号截取,然后对截取的局部信号作Fourier变换。然后不断地移动窗口函数中心的位置,就可以得到信号的局部区域的瞬时频率,

因此,对于连续的信号,它的窗口傅里叶变换为:

Sf(u,?)??????f(t)g(t?u)e?i?tdt

窗口傅里叶逆变换为:

1f(t)?2???N?1??????Sf(u,?)g(t?u)ei?td?du

而对于离散的信号,它的窗口傅里叶变换为:

?i2?ln?Sf?m,l???f?n?g?n?m?exp???

N??n?0窗口傅里叶逆变换为:

1f?n??N?i2?ln?Sfm,lgn?mexp?????? ???N?m?0l?0N?1N?1三、窗口函数

要进行窗口傅里叶变换,首先要要选择窗口函数,窗口函数有很多,例如高斯窗、hamming窗和Hanning窗等等。其中高斯窗函数被设计为了分析瞬态信号,Hamming和Hann窗函数被设计为了分析窄带信号,Kaiser-Bessel窗函数可用于更好地分离两个频率成分非常

;.

.

接近但振幅完全不同的信号。

在matlab中我们也可以直接调用一些窗口函数,调用的方法如下:

四、实验 实验1:

题目:

在这里我先做了一下书上的例子,对线性调频信号f?t??sin2??2t题目分析:

这个例子有两种做法,第一种方法是直接调用matlab中的spectrogram函数,第二种方法是按照定义选取窗口函数,然后对每一小段的做快速傅里叶变换就可以了。

?2 ?进行频谱分析。

方法一:

源程序:

clear t=0:0.001:10; t1=t;

f1=sin(2*pi*2*power(t,2)); subplot(2,2,1); plot(t,f1); subplot(2,2,2);

;.

.

g=1/6*exp(-0.5*power(t,2)).*(t>=-3 & t<=3)+0.*(t>3 | t<-3); t=-4:0.01:4;

g1=1/6*exp(-0.5*power(t,2)).*(t>=-3 & t<=3)+0.*(t>3 | t<-3); plot(t,g1); subplot(2,2,3);

[S,F,T,P] = spectrogram(f1,gausswin(600),580,600,1E3); surf(T,F,10*log10(abs(P)),'edgecolor','none'); axis([0 10 0 50]) view(0,90);

xlabel('Time (Seconds)'); ylabel('Hz'); subplot(2,2,4);

surf(T,F,10*log10(abs(P))+80,'edgecolor','none'); axis([0 10 0 50 0 200]) %axis tight

xlabel('Time (Seconds)'); ylabel('Hz'); zlabel('enargy')

得到结果:

;.

.

结果分析:

我们用的是高斯窗口,得到了一个很好的结果,无论是2D图还是3D图,都与书上的图十分相似。但有一个十分大的缺陷,就是无法重构原来的信号,因为我们是直接调用的spectrogram函数,并不太知道里面的具体程序是什么样的,所以无法还原原信号,也无法计算误差。

因此我们就需要第二种方法。

方法二:

源程序: clear t=0:0.001:10; t1=t;

f1=sin(2*pi*2*power(t,2)); subplot(3,2,1); plot(t,f1); subplot(3,2,2);

g=1/6*exp(-0.5*power(t,2)).*(t>=-3 & t<=3)+0.*(t>3 | t<-3); t=-4:0.01:4;

g1=1/6*exp(-0.5*power(t,2)).*(t>=-3 & t<=3)+0.*(t>3 | t<-3); plot(t,g1); N=length(f1);

Nw=20; %窗函数长 window length L=19; %窗函数每次移动的样点数,重叠宽度 Ts=round((N-Nw)/L)+1; %计算把数据x共分成多少段 nfft=2^ceil(log2(Nw)) ; ?T的长度 TF=zeros(Ts,nfft); %将存放三维谱图,先清零 %for i=1:Ts i=0; flag=0; while flag==0;

;.

.

i=i+1;

if (i-1)*Nw+Nw

xw=f1((i-1)*L+1:i*L+L)*hamming(2*L); %取一段数据 temp=fft(xw,nfft); ?T变换

temp=fftshift(abs(temp)); %频谱以0频为中心 %TF(i,:);

TF(i,:)=temp; %把谱图存放在TF中 else flag=1; end end

subplot(3,2,3); %mesh(abs(TF)); %view(0,90); %axis tight %imagesc(TF); contour(abs(TF)); xlabel('时间'); ylabel('频率') subplot(3,2,4);

mesh(abs(TF)); %三维绘图 axis tight title('STFT'); xlabel('时间'); ylabel('频率'); %%%%短时傅里叶变换 X=fft(f1); X=fftshift(X);

;.

信息工程概论-窗口傅里叶变换

.信息工程概论作业——窗口傅里叶变换姓名:白子轩学号:2130602008班级:信计31一、传统的傅里叶变换我们都知道,信号分析中最重要的两个参数是时间和频率,而我们一般所得到的信号表?(?)?示形式都是f?t?的形
推荐度:
点击下载文档文档为doc格式
18se7728ya4mn0g1mmp04oweh0q6fq00ok7
领取福利

微信扫码领取福利

微信扫码分享