用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函数相同。

例子:
x ( n ) = R 4 ( n ) x(n) = R_4(n) x(n)=R4(n), X ( e j w ) = F T [ x ( n ) ] X(e^{jw}) = FT[x(n)] X(ejw)=FT[x(n)]。分别计算 X ( e j w ) X(e^{jw}) X(ejw)在频率区间[0, 2π]上的16点和32点等间隔采样,并绘制 X ( e j w ) X(e^{jw}) X(ejw)采样的幅频特性曲线和相频特性曲线。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]);

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值