数字信号处理翻转课堂笔记6——离散傅立叶变换(DFT)及matlab实现

数字信号处理翻转课堂笔记6

The Flipped Classroom6 of DSP

对应教材:《数字信号处理(第五版)》西安电子科技大学出版社,丁玉美、高西全著

一、要点

1、离散傅里叶变换(DFT)的定义;
2、DFT与傅里叶变换、z变换之间的关系(重点);
3、DFT与周期序列DFS之间的关系,即DFT的隐含周期性(难点);
4、利用MATLAB求序列DFT的基本方法。

二、问题与解答

1、根据DFT、z变换、序列傅里叶变换(FT)的定义式,分析3者之间的数学关系,并据此说明DFT的物理含义(DFT是否能反映序列的频谱特性?)。

2、
在这里插入图片描述
3、
在这里插入图片描述

4、任意取一个周期实序列,分别截取该序列的1个周期和2个周期长度,用MATLAB求各自的DFT,比较两者所得结果的联系和区别。相关原理分析参见第四版教材P102页(第三版P99页)。

5、利用MATLAB平台,以适当的采样频率,用电脑自带麦克风采集不同的人说某一个单音节(比如数字“1”)的语音信号(基于MATLAB平台的语音采集方法或程序,请自行查阅相关资料。比如可以利用audiorecorder来录音)。然后用DFT分析所采集语音信号的频谱(注意首先要对采集到的语音信号进行适当的截取),说明该频谱所对应的模拟频率,对比不同人说同一个音节的频谱的差异(最好分别用男声和女声进行采集)。需汇报如下内容:语音采集的方法、所采集的语音信号波形、单音节语音信号的截取方式、DFT频谱分析方法及其程序设计思路、对频谱分析结果的比较和讨论等等。

6、假设某长度为8的序列 ,其24点DFT的模如图所示,试分别画出 的8点和12点DFT的模。
在这里插入图片描述

7、
在这里插入图片描述

1、DFT与z变换和DTFT的关系及DFT的物理含义

根据DFT、z变换、序列傅里叶变换(FT)的定义式,分析3者之间的数学关系,并据此说明DFT的物理含义(DFT是否能反映序列的频谱特性?)。
数学关系:
在这里插入图片描述
物理意义:
1、
在这里插入图片描述
2、
在这里插入图片描述

物理意义1的图形解释:
在这里插入图片描述

2、不同长度的DFT的分析

在这里插入图片描述
代码:

%%      代码:
%%      幅度:
xn=[1,1,1,1];
Xk4=fft(xn,4);
N=4;
k=0:N-1;
w=k*2*pi/N;
subplot(3,1,1)
stem(w/pi,abs(Xk4));
xlabel('w/\pi')
ylabel('幅度')
title('Xk4')
axis([0 2 0 5])

subplot(3,1,2)
Xk8=fft(xn,8);
N=8;
k=0:N-1;
w=k*2*pi/N;
stem(w/pi,abs(Xk8));
xlabel('w/\pi')
ylabel('幅度')
title('Xk8')
axis([0 2 0 5])

subplot(3,1,3)
Xk32=fft(xn,32);
N=32;
k=0:N-1;
w=k*2*pi/N;
stem(w/pi,abs(Xk32));
xlabel('w/\pi')
ylabel('幅度')
title('Xk32')
axis([0 2 0 5])

%%      相位:
figure(2)
xn=[1,1,1,1];
Xk4=fft(xn,4);
N=4;
k=0:N-1;
w=k*2*pi/N;

subplot(3,1,1)
stem(w/pi,angle(Xk4));
xlabel('w/\pi')
ylabel('相位')
title('Xk4')
axis([0 2 -2 2])

subplot(3,1,2)
Xk8=fft(xn,8);
N=8;
k=0:N-1;
w=k*2*pi/N;
stem(w/pi,angle(Xk8));
xlabel('w/\pi')
ylabel('相位')
title('Xk8')
axis([0 2 -2 2])

subplot(3,1,3)
Xk32=fft(xn,32);
N=32;
k=0:N-1;
w=k*2*pi/N;
stem(w/pi,angle(Xk32));
xlabel('w/\pi')
ylabel('相位')
title('Xk32')
axis([0 2 -2 2])

运行结果:
幅度谱:
在这里插入图片描述
相位谱:
在这里插入图片描述

分析:
1、区别与联系:同一序列,采样点数不同,DFT的结果不同但其包络形状相同。
2、DFT与FT的关系:X(k)为x(n)的傅里叶变换在区间[0,2п]上的N点等间隔采样。
3、4点DFT时,DFT的隐含周期为4。从x(n)周期延拓为x(n)4,可以看做单位阶跃序列,它的DFS(k)只在k+4m取值,取其主值序列X(k)。是直流序列,只有直流成分,它的频谱上只有零频率成分。(教材99页解释如下)
在这里插入图片描述

3、DFT的隐含周期性

在这里插入图片描述
关系:
有限长序列x(n) 的N点离散傅里叶变换X(k)正好是x(n)的周期延拓序列的离散傅里叶级数系数的主值序列。
即R4(n)的4、8、32点DFT=相应周期为4、8、32的周期序列的DFS

总结:
在这里插入图片描述
联系就是:
在这里插入图片描述

4、同一周期序列不同周期长度的DFT

任意取一个周期实序列,分别截取该序列的1个周期和2个周期长度,用MATLAB求各自的DFT,比较两者所得结果的联系和区别。
代码:

%%		代码:
% DFT的MATLAB计算
xn=[1 1 1 1];                   %输入时域序列向量xn=R4(n)
Xk16=fft(xn,16);                %计算xn的16点DFT
Xk32=fft(xn,32);                %计算xn的32点DFT

%以下为绘图部分
k=0:15;wk=2*k/16;               %产生16点DFT对应的采样点频率(关于π归一化值)
subplot(2,2,1);
stem(wk,abs(Xk16),'.');         %绘制16点DFT的幅频特性图
title('(a)16点DFT的幅频特性图');
xlabel('ω/π');
ylabel('幅度')

subplot(2,2,3);
stem(wk,angle(Xk16),'.');       %绘制16点DFT的相频特性图
line([0,2],[0,0]);
title('(b)16点DFT的相频特性图')
xlabel('ω/π');
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('ω/π');
ylabel('幅度')

subplot(2,2,4);
stem(wk,angle(Xk32),'.');       %绘制32点DFT的相频特性图
line([0,2],[0,0]);
title('(d)32点DFT的相频特性图');
xlabel('ω/π');
ylabel('相位');
axis([0,2,-3.5,3.5])

运行结果:
在这里插入图片描述
联系:各自的DFT幅频响应还是都能反应傅里叶变换的包络变化;
区别:截取二者的不同周期时,二者DFT幅频响应发生变化。可以看成是两个不同的的DFT,也可以看做是不同部分的叠加求和。

5、语音采集的频谱分析

利用MATLAB平台,以适当的采样频率,用电脑自带麦克风采集不同的人说某一个单音节(比如数字“1”)的语音信号(基于MATLAB平台的语音采集方法或程序,请自行查阅相关资料。比如可以利用audiorecorder来录音)。然后用DFT分析所采集语音信号的频谱(注意首先要对采集到的语音信号进行适当的截取),说明该频谱所对应的模拟频率,对比不同人说同一个音节的频谱的差异(最好分别用男声和女声进行采集)。需汇报如下内容:语音采集的方法、所采集的语音信号波形、单音节语音信号的截取方式、DFT频谱分析方法及其程序设计思路、对频谱分析结果的比较和讨论等等。

代码:

%%      代码:
%%进行语音信号的采集
n=8000;                             %采样个数
fs=11025;                           %采样频率
y=audiorecorder(n,16,2);            %样本大小为16,2为立体声道
disp('Start speaking.')
recordblocking(y,2);                %录制2disp('End of Recording.');

g=getaudiodata(y);                  %得到以n*2列数字矩阵存储的刚录制的音频信号
filename='C:\luyin\luyin2s.wav';
audiowrite('voice.wav',g,fs);       %将采集到的音频信号存入文件'voice.wav'

%%语音信号的采集并绘图分析
[y1,Fs]=audioread('voice.wav');     %读取音频文件
t=(0:length(y1)-1)/Fs;
figure(1);
plot(y1);
legend('时域波形图');
title('原语音信号时域波形图');
xlabel('时间(s)');
ylabel('幅度');

%%DFT分析
figure(2);
N=length(y1);                       %序列长度
f=(0:N-1)*Fs./N;                     %真实频率值
y2=fft(y1,N)
plot(f,abs(y2));
axis([0 1000 0 120]);
title('原语音信号DFT波形图');
xlabel('频率(Hz)');
ylabel('幅度');

进行了两次发声,第一次为“1”(正常男声),第二次为“啊”(男生的假声),结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由图可知:原始语音信号的频率大致分布在0-1000hz之中。
第二次的声音频率比第一次高。

6、不同长度的DFT的频谱

假设某长度为8的序列 ,其24点DFT的模如图所示,试分别画出 的8点和12点DFT的模。
在这里插入图片描述
代码:

%%      代码:
clf
x=[0 3 6 9 12 15 18 21];
y=[2 2 5 3 0 3 5 2];
stem(x,y)
title('N=8')

figure(2)
x=[0 2 4 6 8 10 12 14 16 18 20 22];
y=[2 1 3 5 4 2 0 2 4 5 3 1];
stem(x,y)
title('N=12')

运行结果:
在这里插入图片描述
在这里插入图片描述

7、有限长序列经周期延拓后的DFS以及截取一段后的DFT

在这里插入图片描述
代码:

%%      代码:
clf
clear
xn=[0 1 2 1 1 0 0 0];       %构造序列
xn=ifft(xn,8);
N=8;
n = 0:1:N-1; 
k = 0:1:N-1; 

WN = exp(-1i*2*pi/N);       %DFS的准备(具体见教材式2.3.6'1i'等价于虚数单位'j'
nk = n'*k;                  %n转置后成了一个方阵
WNnk = WN .^ nk;            %次方
Xk = xn * WNnk;             %相乘

figure(1)                   %x((n))8的DFS
stem(k,abs(Xk))
title('DFS')

figure(2)                   %x(n)*R16(n)16点的DFT
N=16;
k = [0:1:15];
xn1=[xn,xn];
Xk=fft(xn1,N);              %DFT用fft函数来求
stem(k,abs(Xk))
title('DFT')

运行结果:
在这里插入图片描述
在这里插入图片描述
分析规律:
在这里插入图片描述
在这里插入图片描述

三、反思总结

1、DFT和DTFT的matlab计算方法:
在这里插入图片描述
2、第7题DFS的matlab求法

N=8;						%DFS的准备(具体见教材式2.3.6)
n = 0:1:N-1; 
k = 0:1:N-1; 
WN = exp(-1i*2*pi/N);       %'1i'等价于虚数单位'j'
nk = n'*k;                  %n转置后成了一个方阵
WNnk = WN .^ nk;            %次方
Xk = xn * WNnk;             %相乘

教材式2.3.6
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗然而日章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值