武汉科技大学 信号与系统课程设计

  • 格式:doc
  • 大小:508.00 KB
  • 文档页数:14

二○一二~二○一三学年第二学期信息科学与工程学院课程设计报告书课程名称:信号与系统班级:电信DB XXXXX学号:201112135Xxx姓名:XXXXX指导教师:XXXXX目录第一节 需求分析第二节 理论分析和设计第三节 详细设计第四节 调试分析和过程描述第五节 总结一、需求分析1、设计题目与要求题目一:设有直流信号)(1)(∞<<-∞=t t g ,现对它进行均匀取样,形成序列()1()g n n =-∞<<∞。

试讨论若对该序列分别作加窗、补零和插零处理,信号频谱结构有何变化。

(提示:可先做理论推导,然后将理论推导和编程得到的结果结合起来分析)题目二:在Matlab 环境中,利用编程方法对语音信号进行采集和谱分析。

(1)通过至少两种方法实现对语音信号的采集,做出时域波形图。

(2)对语音信号进行谱分析,做出频谱图,总结出语音信号的特点。

2、系统功能对于题目一,先对幅度为1的直流信号进行均匀采样形成序列,然后对得到的序列进行加窗、补零和插零处理,观察信号频谱结构的变化情况。

对于题目二,可以用计算机的声音编辑工具录制一段语音信号,生成.wav 文件,得到语音信号;也可以将声卡作为对象处理采集语音信号。

通过plot 函数可以得到时域波形图,对时域信号进行快速傅里叶变换可以的到语音信号的频谱图,对这些图进行分析可以总结出语音信号的特点。

二、理分析和设计1、理论分析对于题目一,采样得到的序列其周期为任意整数,若对其加矩形窗进行截断,并将截断的信号做快速傅里叶变换,由于做离散傅里叶变换的点数为原序列的周期,故可以得到原序列的真实谱。

对加窗得到的信号进行补零,若补零的点数远多于窗的时域长度,补零之后的这个序列可以看做对离散的门函数加窗得到的,所以补零后的频谱接近于离散的Sa 函数;若补零点数远小于窗的时域长度,补零之后的这个序列可以近似看做对原序列(()1()g n n =-∞<<∞)加窗得到的,所以补零后的频谱近似于原序列的频谱。

对加窗得到的信号进行插零,可得到插零后的频谱。

对于题目二,可以用计算机的声音编辑工具录制一段语音信号,生成.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 ).10,)()]([)(10-≤≤==∑-=N k W n x n x DFT k X N n kn N ∑∞-∞=-=k j k N k X N e X )2()(~)2()(πωδπωπωππωωπδωω<<---==∑∞-∞=00,)2(2)(][0i j n j i e X e FT ∑∞-∞=-k k )2(πωδ00[)]2()jn t e n πδΩΩ=-Ω[()]=f t 0[]∞Ω=-∞∑jn t n n F e n n F ∞=-∞=∑0[]jn t e Ω10,)()]([)(1-≤≤==∑-N k W n x n x DFT k X N kn N由离散傅里叶变换的定义公式:. 可以得到语音信号的频谱。

在Matlab环境中,是通过fft函数来实现的,也即是通过离散傅里叶变换的快速算法来实现的,从而极大的提高了计算的速度。

三、详细设计题目一:原信号的波形:经过傅里叶变换后的频谱:采样后得到的序列:① 采样后的序列进行加矩形窗处理。

加时域长度为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')对g(n)加时域为5点的窗并进行5点的快速傅里叶变换K →G (K ) →加时域长度为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')对g(n)加时域为100点的窗并进行100点的快速傅里叶变换K →G (K ) →② 加窗后的序列进行补零处理,分两种情况进行补零。

情况一:补零的长度远大于序列的长度。

对5点的序列补上105个0,源程序及运行所得图像如下:for n=0:4 %对原序列加时域长度为5点的窗g(n+1)=1;endfor n=5:109g(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('\fontsize{14} \bfK \rightarrow')ylabel('\fontsize{14} \bfG (K ) \rightarrow')对5点的序列补上105个0并进行110点快速傅里叶变换K →G (K ) →情况二:补零的长度远小于序列的长度。

对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('\fontsize{14} \bfK \rightarrow')ylabel('\fontsize{14} \bfG (K ) \rightarrow')K →G (K ) →对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('\fontsize{14} \bfK \rightarrow')ylabel('\fontsize{14} \bfG (K ) \rightarrow')0102030405060708090100K →G (K ) →从情况二中的两幅图对比可以得出如下结论: 若直流序列所加矩形窗的时域长度越长且对其补的零越短,对其进行快速傅里叶变换后其频谱越接近真实谱。

③对加窗后的序列进行插零处理。

对加窗后所得的5点序列,每隔一个点插一个零,源程序及运行所得图像如下: g=[1 0 1 0 1 0 1 0 1]G=fft(g,9) %进行9点快速傅里叶变换n=0:8G(n+1)=Gstem(0:8,abs(G),'fill') %绘出插零的频谱图title('对序列插零并进行快速傅里叶变换')xlabel('\fontsize{14} \bfK \rightarrow')ylabel('\fontsize{14} \bfG (K ) \rightarrow')012345678对序列插零并进行快速傅里叶变换K →G (K ) →题目二:方法一:用计算机的声音编辑工具录制一段语音信号,生成.wav 文件,得到语音信号。

源程序及运行所得图像如下:[x,fs,bits]=wavread('C:\Documents and Settings\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('经快速傅里叶变换后的信号波形)00.51 1.52 2.53x 105-1-0.50.51原始信号波形02000400060008000100001200005101520经快速傅里叶变换后的信号波形方法二:声卡作为对象处理采集语音信号。

源程序及运行所得图像如下: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) % 定义超时值Fs = ActualRate; % 设置采样速率clear data1;start(AI) % 开始采样try[data1,time]=getdata(AI); % 将采样得到的数据保存到data1,采样时间保存到time catch time=0;data1=0;disp('A timeout occurred.');endsubplot(2,1,1) % 绘制2行1列的第1张子图plot(time,data1) % 以时间为横轴,数据为纵轴作图 xlabel('Time (sec.)') % 标注横坐标ylabel('Signal Level (Volts)') % 标注纵坐标grid on % 添加网格subplot(2,1,2)M=fft(data1,1024)plot(time,data1)grid on-1-0.9-0.8-0.7-0.6-0.5-0.4-0.3-0.2-0.10-0.02-0.0100.010.02Time (sec.)S i g n a l L e v e l (V o l t s )-1-0.9-0.8-0.7-0.6-0.5-0.4-0.3-0.2-0.10-0.02-0.010.010.02通过对语音信号的观察和分析发现,语音信号主要有下面两个特点:①在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。