⽤MATLAB 计算序列的离散傅⾥叶变换
⽤MATLAB 计算序列的离散傅⾥叶变换
MATLAB提供了⽤快速算法计算离散傅⾥叶变换的函数fft,其调⽤格式为:
Xk = fft(xn, N)其中,调⽤参数xn为时域序列向量,N为离散傅⾥叶变换区间长度。当N⼤于xn的长度时,fft函数⾃动在xn后⾯补零,返回xn的N点离散傅⾥叶变换结果向量Xk。当N⼩于xn的长度时,fft函数计算xn的前N个点构成的序列N点离散傅⾥叶变换,忽略xn后⾯的元素。计算离散傅⾥叶逆变换应调⽤函数ifft,调⽤格式与fft函数相同。
例⼦:
,。分别计算在频率区间[0, 2π]上的16点和32点等间隔采样,并绘制采样的幅频特性曲线和相频特性曲线。matlab程序如下 :
xn = [1 1 1 1 ]; %输⼊时域序列向量 xn = R4(n)
Xk16 = fft(xn, 16); % 计算xn 的16点fft
Xk32 = fft(xn, 32); % 计算xn 的32点fft
% 以下为绘图部分
k = 0 : 15;
wk = 2*k/16; %计算16点DFT 对应的采样点频率
subplot(2,2,1);
stem(wk, abs(Xk16), '.'); %绘制16点DFT 的幅频特性图
title('(a )16点DFT 的幅频特性图');
xlabel('w/π');
ylabel(' 幅度 ');
subplot(2,2,3);
stem(wk, angle(Xk16), '.'); %绘制16点DFT 的相频特性图
line([0,2], [0,0]);
title('(b )16点DFT 的相频特性图');
xlabel('w/π');
ylabel(' 相位 ');
axis([0 , 2, -3.5 ,3.5]);
k = 0 : 31;
wk = 2*k/32; %计算32点DFT 对应的采样点频率
subplot(2,2,2);
stem(wk, abs(Xk32), '.'); %绘制32点DFT 的幅频特性图
title('(c )32点DFT 的幅频特性图');
xlabel('w/π');
ylabel(' 幅度 ');
subplot(2,2,4);
stem(wk, angle(Xk32), '.'); %绘制32点DFT 的相频特性图
line([0,2], [0,0]);
title('(d )32点DFT 的相频特性图');
xlabel('w/π');
ylabel(' 相位 ');
axis([0 , 2, -3.5 ,3.5]);
x (n )=R (n )4X (e )=jw FT [x (n )]X (e )jw X (e )jw
用subplot函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论