级信号与系统课程设计.docx
- 文档编号:9677032
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:113.03KB
级信号与系统课程设计.docx
《级信号与系统课程设计.docx》由会员分享,可在线阅读,更多相关《级信号与系统课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
级信号与系统课程设计
二○一二~二○一三学年第二学期
信息科学与工程学院
课程设计报告书
课程名称:
班级:
学号:
姓名:
指导教师:
二○一三年六月
一、需求分析
1、设计题目与要求
题目一:
设有直流信号
,现对它进行均匀取样,形成序列
。
试讨论若对该序列分别作加窗、补零和插零处理,信号频谱结构有何变化。
(提示:
可先做理论推导,然后将理论推导和编程得到的结果结合起来分析)
题目二:
在Matlab环境中,利用编程方法对语音信号进行采集和谱分析。
(1)通过至少两种方法实现对语音信号的采集,做出时域波形图。
(2)对语音信号进行谱分析,做出频谱图,总结出语音信号的特点。
2、系统功能
对于题目一,先对幅度为1的直流信号进行均匀采样形成序列,然后对得到的序列进行加窗、补零和插零处理,观察信号频谱结构的变化情况。
对于题目二,可以用计算机的声音编辑工具录制一段语音信号,生成.wav文件,得到语音信号;也可以将声卡作为对象处理采集语音信号。
通过plot函数可以得到时域波形图,对时域信号进行快速傅里叶变换可以的到语音信号的频谱图,对这些图进行分析可以总结出语音信号的特点。
二、理分析和设计
1、理论分析
对于题目一,采样得到的序列其周期为任意整数,若对其加矩形窗进行截断,并将截断的信号做快速傅里叶变换,由于做离散傅里叶变换的点数为原序列的周期,故可以得到原序列的真实谱。
对加窗得到的信号进行补零,若补零的点数远多于窗的时域长度,补零之后的这个序列可以看做对离散的门函数加窗得到的,所以补零后的频谱接近于离散的Sa函数;若补零点数远小于窗的时域长度,补零之后的这个序列可以近似看做对原序列(
)加窗得到的,所以补零后的频谱近似于原序列的频谱。
对加窗得到的信号进行插零,可得到插零后的频谱。
对于题目二,可以用计算机的声音编辑工具录制一段语音信号,生成.wav文件,得到语音信号;也可以将声卡作为对象处理采集语音信号。
通过plot函数可以绘制出其时域波形图,再对时域信号进行快速傅里叶变换可以得到语音信号的频谱,观察这些图的特点可以总结出语音信号的特点。
2、计算
题目一:
设g(t)=1的傅里叶变换为G(jΩ).
由公式:
ℱ
ℱℱℱ
可得:
G(jΩ)=2πδ(Ω).
设g(n)=1的N点离散傅里叶为G(K).
由公式:
可得:
G(K)=2π.
题目二:
设语音信号为x(t),则其序列x(n)的离散傅里叶变换记为X(K).
由离散傅里叶变换的定义公式:
.
可以得到语音信号的频谱。
在Matlab环境中,是通过fft函数来实现的,也即是通过离散傅里叶变换的快速算法来实现的,从而极大的提高了计算的速度。
三、详细设计
题目一:
原信号的波形:
经过傅里叶变换后的频谱:
采样后得到的序列:
1采样后的序列进行加矩形窗处理。
加时域长度为5点的矩形窗,源程序及运行所得图像如下:
n=0:
4%对原序列加时域长度为5点的窗
g(n+1)=1;
G=fft(g,5)%进行5点的快速傅里叶变换
stem(0:
4,abs(G),'fill')%绘出频谱图
title('对g(n)加时域为5点的窗并进行5点的快速傅里叶变换')
xlabel('\fontsize{14}\bfK\rightarrow')
ylabel('\fontsize{14}\bfG(K)\rightarrow')
加时域长度为100点的矩形窗,源程序及运行所得图像如下:
n=0:
99%对原序列加时域长度为100点的窗
g(n+1)=1;
G=fft(g,100)%进行100点的快速傅里叶变换
stem(0:
99,abs(G),'fill')%绘出频谱图
title('对g(n)加时域为100点的窗并进行100点的快速傅里叶变换')
xlabel('\fontsize{14}\bfK\rightarrow')
ylabel('\fontsize{14}\bfG(K)\rightarrow')
2加窗后的序列进行补零处理,分两种情况进行补零。
情况一:
补零的长度远大于序列的长度。
对5点的序列补上105个0,源程序及运行所得图像如下:
forn=0:
4%对原序列加时域长度为5点的窗
g(n+1)=1;
end
forn=5:
109
g(n+1)=0%补105个零
end
G=fft(g,110)%进行110点快速傅里叶变换
stem(0:
109,abs(G),'fill')
axis([010905])
title('对5点的序列补上105个0并进行110点快速傅里叶变换')
xlabel('\fontsize{14}\bfK\rightarrow')
ylabel('\fontsize{14}\bfG(K)\rightarrow')
情况二:
补零的长度远小于序列的长度。
对100点的序列补上10个0,源程序及运行所得图像如下:
forn=0:
99%对原序列加时域长度为100点的窗
g(n+1)=1;
end
forn=100:
109%补10个零
g(n+1)=0
end
G=fft(g,110)%进行110点快速傅里叶变换
stem(0:
109,abs(G),'fill')
axis([01090100])
title('对100点的序列补上10个0并进行110点快速傅里叶变换')
xlabel('\fontsize{14}\bfK\rightarrow')
ylabel('\fontsize{14}\bfG(K)\rightarrow')
对100点的序列补上1个0,源程序及运行所得图像如下:
forn=0:
99%对原序列加时域长度为100点的窗
g(n+1)=1;
end
forn=100:
100%补1个零
g(n+1)=0
end
G=fft(g,101)%进行101点快速傅里叶变换
stem(0:
100,abs(G),'fill')
axis([01000100])
title('对100点的序列补上1个0并进行101点快速傅里叶变换')
xlabel('\fontsize{14}\bfK\rightarrow')
ylabel('\fontsize{14}\bfG(K)\rightarrow')
从情况二中的两幅图对比可以得出如下结论:
若直流序列所加矩形窗的时域长度越长且对其补的零越短,对其进行快速傅里叶变换后其频谱越接近真实谱。
③对加窗后的序列进行插零处理。
对加窗后所得的5点序列,每隔一个点插一个零,源程序及运行所得图像如下:
g=[101010101]
G=fft(g,9)%进行9点快速傅里叶变换
n=0:
8
G(n+1)=G
stem(0:
8,abs(G),'fill')%绘出插零的频谱图
title('对序列插零并进行快速傅里叶变换')
xlabel('\fontsize{14}\bfK\rightarrow')
ylabel('\fontsize{14}\bfG(K)\rightarrow')
题目二:
方法一:
用计算机的声音编辑工具录制一段语音信号,生成.wav文件,得到语音信号。
源程序及运行所得图像如下:
[x,fs,bits]=wavread('C:
\DocumentsandSettings\Administrator\桌面\上海滩片头音乐.wav');
sound(x,fs,bits)
X=fft(x,12000);
subplot(2,1,1)
plot(x);
title('原始信号波形');
subplot(2,1,2)
plot(abs(X));
title('经快速傅里叶变换后的信号波形)
方法二:
声卡作为对象处理采集语音信号。
源程序及运行所得图像如下:
functionxinhao
AI=analoginput('winsound');%‘winsound’为声卡的驱动程序
chan=addchannel(AI,1);%Addchannels-AddonechanneltoAI.
%Configurepropertyvalues-Assignvaluestothebasicsetupproperties,and
%createthevariablesblocksizeandFs,whichareusedforsubsequentanalysis.
%Theactualsamplingrateisretrievedsinceitmaybesetbytheenginetoa
%valuethatdiffersfromthespecifiedvalue.
set(AI,'SampleRate',8000)%设置采样速率为8000Hz
ActualRate=get(AI,'SampleRate');%从AI中获取实际采样速率
set(AI,'TriggerChannel',chan)%设置触发通道
set(AI,'TriggerType','software');%设置触发类型
set(AI,'Triggercondition','rising');%设置为电压上升至某值后触发
set(AI,'TriggerConditionValue',0.013);%设置触发电压值
set(AI,'TriggerDelay',-1);%设置触发时延
set(AI,'TriggerDelayUnits','seconds');%设置触发时延的单位
set(AI,'timeout',2)%定义超时值
Fs=ActualRate;%设置采样速率
cleardata1;
start(AI)%开始采样
try
[data1,time]=getdata(AI);%将采样得到的数据保存到data1,采样时间保存到time
catchtime=0;data1=0;
disp('Atimeoutoccurred.');
end
subplot(2,1,1)%绘制2行1列的第1张子图
plot(time,data1)%以时间为横轴,数据为纵轴作图
xlabel('Time(sec.)')%标注横坐标
ylabel('SignalLevel(Volts)')%标注纵坐标
gridon%添加网格
subplot(2,1,2)
M=fft(data1,1024)
plot(time,data1)
gridon
通过对语音信号的观察和分析发现,语音信号主要有下面两个特点:
在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。
在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。
利用这个特点,可以用一个防混迭的带通滤波器将此范围内的语音信号频率分量取出,然后按8kHz的采样率对语音信号进行采样,就可以得到离散的语音信号。
四、调试分析过程描述
在对题目一中的信号进行补零处理时,做了两种情况的补零:
●补零的点数远多于窗的时域长度。
●补零点数远小于窗的时域长度。
但两种情况得到的频谱不一样。
分析如下:
若补零的点数远多于窗的时域长度,补零之后的这个序列可以看做对离散的门函数加窗得到的,所以补零后的频谱接近于离散的Sa函数;若补零点数远小于窗的时域长度,补零之后的这个序列可以近似看做对原序列(
)加窗得到的,所以补零后的频谱近似于原序列的频谱。
在题目二中,用计算机的声音编辑工具录制一段语音信号,生成.wav文件,得到语音信号。
对此语音信号进行频谱分析时,开始得到的频谱是一等于零的频谱线,说明没有声音信号,但实际声音信号的波形已经绘出。
这一矛盾分析如下:
过观察语音信号的时域波形图发现,开始一段时间是不存在语音信号的,由于做快速傅里叶变换的点数取的是4096点,即取的点数太少了,故是对语音信号等于零的部分做的快速傅里叶变换,因此得到的频谱是一等于零的频谱线。
通过将做快速傅里叶变换的点数增加到12000点,就得到了语音信号的频谱。
五、总结
首先,通过学习使自己对课本上的知识能够用于实践,使得理论与实践相结合,加深自己对课本知识的理解,同时也锻炼了自己的查阅资料的能力,能够充分利用图书馆去查阅资料增加许多课本以外的知识,学会了对语音信号采集的两种方法,用计算机的声音编辑工具录制一段语音信号,生成.wav文件,得到语音信号;将声卡作为对象处理采集语音信号。
能对MATLAB等软件操作,能达到学以致用。
发现了直流信号更适合加矩形窗这一特点。
而且程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点的去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。
再总体解决大的问题。
这样做起来不仅有条理也使问题得到了轻松的解决。
这次课程设计,从中我也有所收获,给了我们复习的机会,如:
时域的周期离散对应频域的周期离散及离散傅里叶变换的定义等理解更深,巩固了基础知识,初步懂得了把书本和实践相结合,懂得了做什么事都要有恒心,也要有决心。
对我们学生来说,理论与实践同样重要,在课程设计中所学的知识和老师的指导却让我难以忘记。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 课程设计