用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程序如下 :文章来源:https://www.toymoban.com/news/detail-415640.html
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]);
文章来源地址https://www.toymoban.com/news/detail-415640.html
到了这里,关于用MATLAB计算序列的离散傅里叶变换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!