资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
二一二二一三学年第 二 学期信息科学与工程学院课程设计报告书课程名称: 班 级: 学 号: 姓 名: 指导教师: 二一三 年 六 月 一、需求分析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函数来实现的,也即是通过离散傅里叶变换的快速算法来实现的,从而极大的提高了计算的速度。三、详细设计题目一:原信号的波形:01(t)gt经过傅里叶变换后的频谱:0(2)G(j)采样后得到的序列: 采样后的序列进行加矩形窗处理。加时域长度为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(fontsize14 bfK rightarrow)ylabel(fontsize14 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(fontsize14 bfK rightarrow)ylabel(fontsize14 bfG(K) rightarrow) 加窗后的序列进行补零处理,分两种情况进行补零。情况一:补零的长度远大于序列的长度。对5点的序列补上105个0,源程序及运行所得图像如下:for n=0:4 %对原序列加时域长度为5点的窗 g(n+1)=1; endfor n=5:109 g(n+1)=0 %补105个零 endG=fft(g,110) %进行110点快速傅里叶变换stem(0:109,abs(G),fill)axis(0 109 0 5)title(对5点的序列补上105个0并进行110点快速傅里叶变换)xlabel(fontsize14 bfK rightarrow)ylabel(fontsize14 bfG(K) rightarrow)情况二:补零的长度远小于序列的长度。对100点的序列补上10个0,源程序及运行所得图像如下:for n=0:99 %对原序列加时域长度为100点的窗 g(n+1)=1;endfor n=100:109 %补10个零 g(n+1)=0endG=fft(g,110) %进行110点快速傅里叶变换stem(0:109,abs(G),fill)axis(0 109 0 100)title(对100点的序列补上10个0并进行110点快速傅里叶变换)xlabel(fontsize14 bfK rightarrow)ylabel(fontsize14 bfG(K) rightarrow)对100点的序列补上1个0,源程序及运行所得图像如下:for n=0:99 %对原序列加时域长度为100点的窗 g(n+1)=1;endfor n=100:100 %补1个零 g(n+1)=0endG=fft(g,101) %进行101点快速傅里叶变换stem(0:100,abs(G),fill)axis(0 100 0 100)title(对100点的序列补上1个0并进行101点快速傅里叶变换)xlabel(fontsize14 bfK rightarrow)ylabel(fontsize14 bfG(K) rightarrow)从情况二中的两幅图对比可以得出如下结论:若直流序列所加矩形窗的时域长度越长且对其补的零越短,对其进行快速傅里叶变换后其频谱越接近真实谱。对加窗后的序列进行插零处理。对加窗后所得的5点序列,每隔一个点插一个零,源程序及运行所得图像如下:g=1 0 1 0 1 0 1 0 1G=fft(g,9) %进行9点快速傅里叶变换n=0:8G(n+1)=Gstem(0:8,abs(G),fill) %绘出插零的频谱图title(对序列插零并进行快速傅里叶变换)xlabel(fontsize14 bfK rightarrow)ylabel(fontsize14 bfG(K) rightarrow)题目二:方法一:用计算机的声音编辑工具录制一段语音信号,生成.wav文件,得到语音信号。源程序及运行所得图像如下:x,fs,bits=wavread(C:Documents and SettingsAdministrator桌面上海滩片头音乐.wav);sound(x,fs,bits)X=fft(x,12000);subplot(2,1,1)plot(x);title(原始信号波形);subplot(2,1,2)plot(abs(X);title(经快速傅里叶变换后的信号波形)方法二:声卡作为对象处理采集语音信号。源程序及运行所得图像如下:function xinhaoAI = analoginput(winsound); %winsound为声卡的驱动程序chan = addchannel(AI,1);% Add channels - Add one channel to AI.% Configure property values - Assign values to the basic setup properties, and %create the variables blocksize and Fs, which are used for subsequent analysis. %The actual sampling rate is retrieved since it may be set by the engine to a %value that differs from the specified value.set(AI,SampleRate,8000) % 设置采样速率为8000HzActualRate = 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)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号