1.实验要求
已知函数 ,求其时域抽样函数 ,并且画出 的离散时间序列的傅里叶变换(DTFT)下的幅频响应和相频响应。最后根据所画图形,得出结论。
2.实现原理
根据离散序列的傅里叶变换公式:
其中
,并以
作为取样间隔。
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.
不仅是
的周期函数,而且是共轭对称的,因此对于实值序列,我们只画出其
,画出其傅里叶变换的幅度和相位即可。
2.
为在时域方面是离散的非周期信号,而通过DTFT变换之后,在频域方面是连续周期的。
6.参考文章
傅里叶变换matlab实现: https://blog.csdn.net/seek97/article/details/82813515