matlab实验
(一) 实验目的: 理解离散傅立叶变换时信号分析与处理的一种重要变换,特别是FFT 在数字信号处理中的高效率应用。
(二) 实验原理:
1、有限长序列x(n)的DFT的概念和公式:
2、FFT 算法
调用格式是
X= fft(x) 或X=fft(x.N)
对前者,若x 的长度是2的整数次幂,则按该长度实现x 的快速变换,否则,实现的是慢速的非2的整数次幂的变换; 对后者,N应为2的整数次幂,若x的长度小于N,则补零,若超过N,则舍弃N 以后的数据。Ifft 的调用格式与之相同。
(三) 实验内容
l、题- ~:若x(n)=cos(n*pi/6)是- 一个N=l2 的有限序列,利用MATLAB 计算它的
DFT 并画出图形。
源程序:
clc;
N=12;
n=0:N- 1;
k=0:N- 1;
xn=cos( n *pi/6);
W=exp(-j* 2* pi/N );
kn=n‘*k
Xk=xn*(W.^kn)
stem( n,Xk );
xlabel(k
ylabel(Xk’);
gridon ;
也可用FFT 算法直接得出结果,程序如F:
clc;
N=l2;
n=0: N- 1;
xn=cos(n*pi/6);
Xk=fft(xn,N):
stem( n,Xk );
xlabel( k );
ylabel( Xk‘);
gridon;
实验结果
分析实验结果:
用DFT 和用FFT对序列进行运算,最后得到的结果相同。但用快速傅立叶变换的运算速度可以快很多。
2、题二:一被噪声污染的信号,很难看出它所包含的频率分量,如- -个由50HZ和120HZ 正弦信号构成的信号,受均值随机噪声的干扰,数扒采样率为1000Hz,
通过FFT 来分析其信号频率成分,用MATLAB实现。
源程序:
clc;
fs = 1000;
N=1024;
n=0:N- l;
t=n/fs;
x=sin(2*pi*50*t)+sin(2*pi* 120*[)+rand( l,N);
y=fft(x,N );
mag=abs( y );
f=n t fs/N ;
subplot( l,2,l),plot(f,mag );
xlabel(频率/Hz‘);
ylabel(振幅’);title( N= 102 4);grid on;
subplot( 1,2,2),plot(f( l:N/2),mag( 1:N/2 );
xlabel(“频率/Hz);
ylabel(振幅);title( N= 1024 );grid
on;
实验结果;
分析实验结果:
用FFT 运算,将序列转变到频域上,虽然信号受到均值随机噪声的干扰,但分析频谱可清楚看到原信号的频率,50Hz 120Hz。
3、题三:调用原始语音信号mtlb,对其进行FFT 变换尼去掉幅值小于1的FFT最后重构语音信号。变换值,最后重构语言信号。
(要求有四幅语音信号的频谱图在同一图形窗口以便比较: 分别是1、原始语音信号;2、FFT 变换; 3 去掉幅值小于1的FFT 变换值;4、重构语音信号)
源程序:
clc;
load mtlb
% Load data
N=512;
subplot(2,2,l)
plot([ l:N],mtlb( 1:N));
title(属i始语音信号‘); grid;
y=ff(mtlb( 1:N));
全部0条评论
快来发表一下你的评论吧 !