信息工程概论窗口傅里叶变换文档格式.docx
- 文档编号:16773439
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:10
- 大小:166.54KB
信息工程概论窗口傅里叶变换文档格式.docx
《信息工程概论窗口傅里叶变换文档格式.docx》由会员分享,可在线阅读,更多相关《信息工程概论窗口傅里叶变换文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
然后不断地移动窗口函数中心的位置,就可以得到信号的局部区域的瞬时频率,
因此,对于连续的信号,它的窗口傅里叶变换为:
窗口傅里叶逆变换为:
而对于离散的信号,它的窗口傅里叶变换为:
3、窗口函数
要进行窗口傅里叶变换,首先要要选择窗口函数,窗口函数有很多,例如高斯窗、hamming窗和Hanning窗等等。
其中高斯窗函数被设计为了分析瞬态信号,Hamming和Hann窗函数被设计为了分析窄带信号,Kaiser-Bessel窗函数可用于更好地分离两个频率成分非常接近但振幅完全不同的信号。
在matlab中我们也可以直接调用一些窗口函数,调用的法如下:
4、实验
实验1:
题目:
在这里我先做了一下书上的例子,对线性调频信号
进行频谱分析。
题目分析:
这个例子有两种做法,第一种法是直接调用matlab中的spectrogram函数,第二种法是按照定义选取窗口函数,然后对每一小段的做快速傅里叶变换就可以了。
法一:
源程序:
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>
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([010050])
view(0,90);
xlabel('
Time(Seconds)'
ylabel('
Hz'
subplot(2,2,4);
surf(T,F,10*log10(abs(P))+80,'
axis([0100500200])
%axistight
zlabel('
enargy'
)
得到结果:
结果分析:
我们用的是高斯窗口,得到了一个很好的结果,无论是2D图还是3D图,都与书上的图十分相似。
但有一个十分大的缺陷,就是无法重构原来的信号,因为我们是直接调用的spectrogram函数,并不太知道里面的具体程序是什么样的,所以无法还原原信号,也无法计算误差。
因此我们就需要第二种法。
法二:
subplot(3,2,1);
subplot(3,2,2);
N=length(f1);
Nw=20;
%窗函数长windowlength
L=19;
%窗函数每次移动的样点数,重叠宽度
Ts=round((N-Nw)/L)+1;
%计算把数据x共分成多少段
nfft=2^ceil(log2(Nw));
%FFT的长度
TF=zeros(Ts,nfft);
%将存放三维谱图,先清零
%fori=1:
Ts
i=0;
flag=0;
whileflag==0;
i=i+1;
if(i-1)*Nw+Nw<
N
%y((i-1)*L+1:
i*L+L)
%hamming(Nw)
xw=f1((i-1)*L+1:
i*L+L)*hamming(2*L);
%取一段数据
temp=fft(xw,nfft);
%FFT变换
temp=fftshift(abs(temp));
%频谱以0频为中心
%TF(i,:
TF(i,:
)=temp;
%把谱图存放在TF中
else
flag=1;
end
subplot(3,2,3);
%mesh(abs(TF));
%view(0,90);
%imagesc(TF);
contour(abs(TF));
时间'
频率'
subplot(3,2,4);
mesh(abs(TF));
%三维绘图
axistight
title('
STFT'
%%%%短时傅里叶变换
X=fft(f1);
X=fftshift(X);
%%%%重构
x1=ifftshift(X);
x1=ifft(x1);
subplot(3,2,5);
plot(t1,x1);
%x轴
振幅'
%y轴
%%%%误差
e=x1-f1;
subplot(3,2,6);
plot(t1,abs(e));
得到结果:
我们发现得到的结果非常不理想,经过多次试验,我并没有找到是哪里出的问题,因此在接下来的实验中将要放弃这种法。
实验2:
录一段自己的声音,对这段声音进行频谱分析。
实验分析:
这个题目和实验1类似,只不过一个用的是连续的窗口傅里叶变换,一个用的是离散的窗口傅里叶变换,所以在这里我们仍然运用matlab中的spectrogram函数即可。
在这里我们需要注意一下,mp3是双音轨的,所以数字化后是一个是一个二维数组,而我们只需要分析其中的一组即可。
于是我就录了自己的一段笑声,并抽取其中的一组数组,进行分析。
[x,fs]=audioread('
C:
\Users\lenovo\Desktop\小波分析\笑.mp3'
y=x(:
1)'
;
plot(y);
信号波形图'
%图名
holdon
N=length(y);
Nw=600;
L=Nw/2;
%%%%%%窗口函数
g=hamming(Nw);
j=-Nw/2;
fori=1:
Nw
t(i)=j;
j=j+1;
plot(t,g,'
.'
[S,F,T,P]=spectrogram(y,hamming(600),580,600,1E3);
surf(T,F,10*log10(P),'
Y=fft(y);
X=fftshift(Y);
plot(x1);
e=x1-y;
plot(abs(e));
结果分析:
我们可以看到得到了一个比较比较清晰地频谱图,但是它的3D图并不是太清晰。
结果不是太理想。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 工程 概论 窗口 傅里叶变换
![提示](https://static.bdocx.com/images/bang_tan.gif)