数字信号处理matlab训练第【2】弹--离散时间序列的傅里叶变换(DTFT)

1.实验要求

已知函数 x ( t ) = s i n c ( t ) 2 π t 2 π x(t)=sinc(t),-2\pi \leq t \leq2\pi ,求其时域抽样函数 x ( n ) x(n) ,并且画出 x ( n ) x(n) 的离散时间序列的傅里叶变换(DTFT)下的幅频响应和相频响应。最后根据所画图形,得出结论。

2.实现原理

根据离散序列的傅里叶变换公式:
X ( e j ω ) = n = x ( n ) e j ω n X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x(n)e^{-j\omega n}
其中 ω [ 2 π , 2 π ] \omega \in[-2\pi,2\pi] ,并以 π / 100 \pi/100 作为取样间隔。

3.matlab实现

我们依据对上边的式子的理解,使用matlab来编写,首先我们先画出该函数的原始图像,第二个图显示的是其抽样图像,第三个第四个分别为其DTFT变换后的幅频特性图和相频特性图。

%%开始实现离散时间序列DTFT,以sinc函数为例。
clc;
clear;
%清除指令和变量
set(gcf,'position',[180,160,900,550]);
%设置图片显示位置为(180,160)
%设置图片大小为(900,550)
subplot(221)
N1=200;
step=4*pi/N1;
t=-2*pi:step:2*pi;
%对t在-2pi到2pi之间平分为100份
y=sinc(t);
plot(t,y)
%定义函数并且画出sinc函数
grid on;
%显示表格
title('sinc(t)在-2\pi到2\pi之间的图像');
xlabel('t');
ylabel('y(t)');
axis([-7 7 -0.3 1.2])
%设置横纵坐标轴

subplot(222)
ts=0.1;%取样时间
fs=1/ts;%周期
N2=31;%取样总数
n=-15:15;
xn=sinc(4*pi*n/N2);%取离散信号数据
stem(n,xn,'filled','r');%绘制时域取样图
grid on;
%显示方格
title('sinc(t)在-2\pi到2\pi之间的抽样');
xlabel('n');
ylabel('sinc(n)');
axis([-16 16 -0.4 1.5])
%设置横纵坐标轴

subplot(223)
k=-200:200;
w=(pi/100)*k;%其原始式子为w=(4*pi)*k/400
%将w针对不同的k的取值,区间变为[-2*pi,2*pi]
wn=exp(-j*pi/100);
%得到公式中的 e的-j*omiga, 该量是个常数
nk=n'*k;
%n的转置与k相乘
%nk为取样矩阵,相当于先是循环n次再是循环k次得到
xk=wn.^nk;
%得到公式中的复变量e的-j*omiga*n
X=xn*xk;
%得到离散序列的傅里叶变换
magX=abs(X);
%求取该DTFT的模,其作用相当于|X|
plot(w,magX,'g')
%在频率[-2pi,2pi]范围内画出幅频响应
axis([-2*pi 2*pi 0 3])
title('幅频特性');
xlabel('w/圆周频率');
ylabel('|X|');
%设置横纵坐标轴

subplot(224)
angX=angle(X);
%求取该DTFT的相位
plot(w,angX)
%在频率[-2pi,2pi]范围内画出相频响应
title('相频特性');
xlabel('w/圆周频率');
ylabel('相位');
axis([-2*pi 2*pi -4 4])
%设置横纵坐标轴

4.结果显示

在这里插入图片描述

5.小结

通过上边显示的图片我们可以看到并总结出如下结论。
1. X ( e j ω ) X(e^{j\omega}) 不仅是 ω \omega 的周期函数,而且是共轭对称的,因此对于实值序列,我们只画出其 [ 0 , 2 π ] [0,2\pi] ,画出其傅里叶变换的幅度和相位即可。
2. x ( n ) x(n) 为在时域方面是离散的非周期信号,而通过DTFT变换之后,在频域方面是连续周期的。

6.参考文章

傅里叶变换matlab实现: https://blog.csdn.net/seek97/article/details/82813515

发布了44 篇原创文章 · 获赞 37 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38468077/article/details/102233930