数字信号课程设计空气主频率柱 洛阳理工汇编.docx
- 文档编号:10504382
- 上传时间:2023-02-17
- 格式:DOCX
- 页数:22
- 大小:1MB
数字信号课程设计空气主频率柱 洛阳理工汇编.docx
《数字信号课程设计空气主频率柱 洛阳理工汇编.docx》由会员分享,可在线阅读,更多相关《数字信号课程设计空气主频率柱 洛阳理工汇编.docx(22页珍藏版)》请在冰豆网上搜索。
数字信号课程设计空气主频率柱洛阳理工汇编
洛阳理工学院
课程设计报告
课程名称数字信号处理
设计题目空气柱主频率模型测定
专业通信工程
班级B120509
学号B12050923
姓名徐国旗
完成日期2015年6月27日
课程设计任务书
设计题目:
空气柱主频率模型测定
_________________________________________________________
设计内容与要求:
题目3:
空气柱主频率测定
当我们向暖水瓶倒水时,暖水瓶中的空气柱会发生振动。
随着水位的升高,空气柱越来越短,空气柱振动的频率越来越大,音调就越来越高,所以根据声音音调的高低就能知道水是否灌满。
甚至我们可以量化这个过程,根据倒水声音音调的高低来反算水位的高低。
笔者对倒水的过程进行了采集试验,选用标准暖水瓶一个,用近似匀速的水流在43秒时间内将水瓶贮满,声音文件的STFT频谱图如下图所示:
题目的基本要求如下:
(1)建立水位高度H和振动频率f的数学模型;
(2)自行设计一个倒水的过程,采集倒水过程的音频信号;
(3)用试验五的STFT程序对倒水声音进行分析;
(4)分离信号基本频率和水位高度的函数曲线;
(5)用函数曲线来验证数学模型的正确性。
课程设计评语
成绩:
指导教师:
年月日
摘要
《数字信号处理》课程是通信专业的一门重要专业基础课,是信息的数字化处理、存储和应用的基础。
数字信号处理的主要研究对象是数字信号,且是采用运算的方法达到处理的目的的,因此,其实现方法,基本上分成两种实现方法,即软件和硬件实现方法。
软件实现方法指的是按照原理和算法,自己编写程序或者采用现成的程序在通用计算机上实现,硬件实现指的是按照具体的要求和算法,设计硬件结构图,用乘法器加法器延时器、控制器、存储器以及输入输出接口部件实现的一种方法。
语音信号的处理与滤波的设计主要是用Matlab作为工具平台,设计中涉及到声音的录制、播放、存储和读取,语音信号的抽样、频谱分析,滤波器的设计及语音信号的滤波,通过数字信号处理课程的理论知识的综合运用。
从实践上初步实现对数字信号的处理。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:
无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。
Matlab语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的喜爱。
特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行语音信号分析、处理和设计。
语音信号的处理与滤波是数字信号处理课程中常出现的课题,也是现代科学中值得深入究研的一个课题。
关键词:
滤波器;信号处理;时频分析;数学建模
第1章概述
1.1设计目的
(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;
(2)掌握数字信号处理的基本概念、基本理论和基本方法;
(3)学会用MATLAB对音频信号进行分析和处理;
(4)掌握MATLAB设计滤波器;
(5)学会用MATLAB的工具箱进行数学建模,解决一些实际问题。
1.2设计步骤
(1)对倒水语音信号进行采集;
(2)用MATLAB对倒水语音信号进行时域频域分析;
(3)用MATLAB对倒水语音信号进行时频联合分析;
(4)对原始声音信号进行切割并分段滤波;
(5)对滤波后的信号进行合成;
(6)分离信号函数曲线;
(7)建立数学模型。
1.2MATLAB简介
MATLAB是矩阵实验室(MatrixLaboratory)之意。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。
MATLAB具有许多的优点比如:
语言简洁紧凑,使用方便灵活,库函数极其丰富;MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性;程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行,等等优点。
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
其启动界面如图1-1所示。
图1-1MATLAB启动界面
第2章声音信号时域频域分析
2.1时域频域波形显示源代码
clear
close
clc
[y,fs]=wavread('daoshui.wav');
%显示声音信号时域波形
t=linspace(0,50,length(y));
subplot(211);
plot(t,y);
%添加网格,标题和坐标轴
title('声音信号的时域波形');
xlabel('时间(s)');
ylabel('幅度');
%显示声音信号频域波形
fsig=abs(fftshift(fft(y)));
ww=linspace(-fs/2,fs/2,length(fsig));
subplot(212);
plot(ww,20*log10(fsig));
%添加网格,标题和坐标轴
gridon;
title('声音信号的频域波形');
xlabel('频率(HZ)');
ylabel('幅度');
2.2时域频域波形效果图
图2-1时域频域波形
2.3时域频域结果分析
从时域频域谱中只能看出含有各个频率分量,但并不能看出具体有什么各频率成分,所以需要时频联合分析。
第3章声音信号时频谱分析
3.1时频谱显示源代码
Clearcloseclc
[y,fs]=wavread('daoshui.wav');
%持续时间
T=length(y)/8000;
MF=4000;
%对信号进行时频分析
[Itf]=ShowSound(y,8000,1.6);
%构造时间频率轴和时频谱缓冲区
t=linspace(0,T,size(I,2));
f=linspace(0,MF,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
mesh(t,f,log2(II));
title('原始信号时频谱');
xlabel('时间(s)');
ylabel('频谱(Hz)')
zlabel('幅度(dB)');
view(0,90);
程序中调用的ShowSound函数是老师给定的,其代码如下:
function[Y,T,F]=ShowSound(s,fs,lamda)
%用矩形窗的FFT将采样率为fs的一段声音s进行时频分析
%Y为输出的时频图样,T是时间轴,F频率轴;
%由于显示设备的限制,时间轴只能显示750个点,频率轴能显示500个点
%lamda是矩形窗的交叠系数,即交叠的部分占总窗体的百分比
%作者:
王新新时间:
2005.8.2
%统一为行向量
[r,c]=size(s);
if(r>c)
s=s';
end;
LS=length(s);
%加750次窗,每次增加的点数
SubLen=floor(LS/750);
%将序列化为750的整倍数
s=s(1:
750*SubLen);
LS=length(s);
%由参数lamda计算出真实窗体的长度
TrueSubLen=floor(SubLen./(1-lamda./2));
%将序列扩展以便于连续加窗
offset=TrueSubLen-SubLen;
s=[zeros(1,offset),s];
%将加窗后的全部序列暂存于tmp,用for循环生成tmp
tmp=zeros(TrueSubLen,750);
fori=2:
750
index=floor((i-1)*SubLen-(TrueSubLen*(lamda./2)))+offset;
tmp(:
i)=(s(index:
(index+TrueSubLen-1)))';
end;
%计算FFT并将颠倒的谱倒过来,只取频谱的正半边
Y=fft(tmp,1000);
Y=Y(500:
end,:
);
Y=(real(Y).^2+imag(Y).^2).^0.5;
%计算T和F
T=0:
1/fs:
(length(s)-1)./fs;
F=0:
500;
3.2时频谱显示效果图
图3-1时频谱显示效果图
3.3时频谱显示结果分析
由图3-1时频谱可看出各频率分量是随时间变化的,而且后一时刻的频率可能会和前面某一时刻的频率大小相等,所以要想通过滤波取主频率柱,必须先对原始信号进行切割,滤波后再合成。
第4章对声音信号进行滤波
4.1对原始信号进行切割
4.1.1对原始信号进行切割并显示源代码
clearall
closeall
clc
[y,fs]=wavread('daoshui.wav');
MF=4000;
[Itf]=ShowSound(y,8000,1.6);
%切割第1段0--15s
T11=1/fs;
T12=15;
y1=y(T11*fs:
T12*fs);
%切割第2段15--25s
T21=15+1/fs;
T22=25;
y2=y(T21*fs:
T22*fs);
%切割第3段25--30s
T31=25+1/fs;
T32=30;
y3=y(T31*fs:
T32*fs);
%切割第4段30--35s
T41=30+1/fs;
T42=35;
y4=y(T41*fs:
T42*fs);
%切割第5段35--44s
T51=35+1/fs;
T52=44;
y5=y(T51*fs:
T52*fs);
4.2对切割后信号分段进行滤波
4.2.1对切割后信号进行滤波并显示源代码
滤波时采用巴特沃夫滤波器,其滤波器特性如下图4-1所示。
%%%%%%%%%%%%%%%滤波并显示程序%%%%%%%%%%%%%%
%第1段切割并滤波后
[B,A]=butter(4,[600/(fs/2),1150/(fs/2)],'bandpass');
res1=filter(B,A,y1);
[Itf]=ShowSound(res1,8000,1.6);
t=linspace(T11,T12,size(I,2));
f=linspace(0,4000,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
subplot(231);
mesh(t,f,log2(II));
axistight
title('第1段切割并滤波后');xlabel('时间(s)');ylabel('频率');
view(0,90);
%第2段切割并滤波后
[B,A]=butter(3,[900/(fs/2),1800/(fs/2)],'bandpass');
res2=filter(B,A,y2);
[Itf]=ShowSound(res2,8000,1.6);
t=linspace(T21,T22,size(I,2));
f=linspace(0,4000,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
subplot(232);
mesh(t,f,log2(II));
axistight
title('第2段切割并滤波后');xlabel('时间(s)');ylabel('频率');
view(0,90);
%第3段切割并滤波后
[B,A]=butter(3,[1600/(fs/2),2200/(fs/2)],'bandpass');
res3=filter(B,A,y3);[Itf]=ShowSound(res3,8000,1.6);
t=linspace(T31,T32,size(I,2));
f=linspace(0,4000,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
subplot(233);
mesh(t,f,log2(II));
axistight
title('第3段切割并滤波后');xlabel('时间(s)');ylabel('频率');
view(0,90);
%第4段切割并滤波后
[B,A]=butter(3,[2000/(fs/2),2600/(fs/2)],'bandpass');
res4=filter(B,A,y4);
[Itf]=ShowSound(res4,8000,1.6);
t=linspace(T41,T42,size(I,2));
f=linspace(0,4000,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
subplot(234);
mesh(t,f,log2(II));
axistight
title('第4段切割并滤波后');xlabel('时间(s)');ylabel('频率');
view(0,90);
%第5段切割并滤波后
[B,A]=butter(3,[2400/(fs/2),3200/(fs/2)],'bandpass');
res5=filter(B,A,y5);
[Itf]=ShowSound(res5,8000,1.6);
t=linspace(T51,T52,size(I,2));
f=linspace(0,4000,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
subplot(235);
mesh(t,f,log2(II));
axistight
title('第5段切割并滤波后');xlabel('时间(s)');ylabel('频率');
view(0,90);
4.2.2滤波器特性及滤波后显示效果图
图4-1滤波器特性图
图4-2切割并滤波后显示效果图
4.2.3切割并滤波后显示效果分析
由图可以看出,前几段滤波效果比较好,而最后两段滤波效果不是太明显,原因是在即将倒满水时频率分量较杂,所需主频率幅度较小。
但可从前面的已知数据中通过数学手段预测出来。
4.3对滤波后的信号进行合成
4.3.1对滤波后声音信号进行合成源代码
%%%%%%%%%%%合成程序%%%%%%%%%%%%%
yres(T11*fs:
T12*fs)=res1;
yres(T21*fs:
T22*fs)=res2;
yres(T31*fs:
T32*fs)=res3;
yres(T41*fs:
T42*fs)=res4;
yres(T51*fs:
T52*fs)=res5;
%显示合成效果
[Itf]=ShowSound(yres,8000,1.6);
t=linspace(T11,T52,size(I,2));
f=linspace(0,MF,size(I,1));
II=zeros(size(I));
II(end:
-1:
1,:
)=I(:
:
);
figure
mesh(t,f,log2(II));
axistight
title('合成效果图');xlabel('时间(s)');ylabel('频率');
view(0,90);
4.3.2.合成后显示效果图
图4-3滤波合成后显示效果
第5章从合成信号中分离频率与时间的曲线
5.1分离频率与时间的关系程序代码
%%%%%%%%%%%%%%%%%%%根据幅度峰值找出频率F与时间t的关系%%%%%%%%%%%%%%%%%%
F=zeros(1,750);
forT=1:
750
[m,F(T)]=max(II(:
T));
end
t=linspace(0,43,750);
F=(F/500)*4000;%显示范围从0-500变为0-4000
figure
title('频率F与时间t的关系图');xlabel('时间');ylabel('频率');
plot(t,F);
5.2分离后的频率与时间的关系图
图5-1频率与时间的函数曲线图
5.3对分离后的频率与时间的关系分析
通过图像可以看出,频率与时间的关系前面效果还是比较好的,只是最后一小段不太好,但这并不影响进行数学建模。
第6章建立频率与水位高度的数学模型
6.1建立频率与时间的数学模型
%%%%%%%%%%%%%%%%%%%%%%%%数学建模%%%%%%%%%%%%%%%%%%%%%%%%%%%%
yy=F(16:
700);
xx=t(16:
700);
figure
plot(xx,yy,'r.');%先描点,看看大致是什么图,这里看到像指数函数曲线。
holdon;
p=polyfit(xx,log(yy),3);
xx=t(16:
750);
X=polyval(p,xx);
Y=exp(X);
plot(xx,Y,'.')
title('频率和时间模型图');xlabel('时间');ylabel('频率');
根据运行结果,
p=-0.0000180.0011830.0157556.6419125
可得到式6-1的函数模型。
6-1
X为时间,Y为频率。
P为系数。
6.2频率与时间的数学模型结果图
图6-1频率与时间的函数模型结果图
6.3建立频率与水位高度的函数模型
由于水是用近似匀速的水流在43秒时间内将水瓶贮满,而经测量,暖水壶高度近似于35cm。
这里忽略暖水瓶最低处和最高处的弯曲,把其等效成圆柱体,所以可以用以下程序得出频率与水位高度的函数模型:
figure
h=linspace(0,35,length(xx));
plot(h,Y,'.')
title('频率和水位高度模型图');xlabel('水位高度h(cm)');ylabel('频率F(HZ)');
图6-2频率F与水位高度h的函数模型图
可以看出当水位不断升高时频率不断增大。
函数模型如式6-2所示:
6-2
至此为止,已建立了频率F与水位高度h的数学模型。
然后就可以根据此模型用单片机等制作通过测量频率计算暖水瓶水位高度的仪器,并加入其它模型,使其变成多用途测量仪,相比其它需要用直接接触的传感器来测量的仪器,有其独特的优势。
心得体会
这次课程设计令我印象非常深刻,通过这次课程设计,我不仅对自己的理论知识学习的更加扎实,而且锻炼了我的动手能力、设计创新的能力。
这次课题布置的比较早,在布置之初我就开始思考程序的编写过思考确定下来思路后便开始着手编写程序。
在编写程序时,会遇到许许多多困难,需要自己耐心思考,寻求解决的办法。
首先编写的是原始信号的时域频域分析程序,由于在平时实验时已经做过相关的实验,所以编写起来还比较顺手。
然后是时频联合分析的程序,此程序由于老师已经给出,所以也比较顺利。
接下来是对信号进行切割,开始的时候想的办法比较麻烦,后来才发现用最简单的方法就可以完成。
滤波器的设计老师平时讲的比较多,所以很快就完成了滤波程序的编写。
在根据幅度峰值找出频率F与时间t的关系时遇到了一些困难,主要是对MATLAB函数不太了解,后来经过用MATLAB的help和上网查询得以解决。
由于自己从未接触过数学建模,所以先在网上进行了数学建模学习,然后才进行建模,最后完成。
本次课设,用到了MATLAB软件,不仅在声音信号处理时,在数学建模时也用到,而且其建模的函数很多,可见MATLAB软件功能的强大。
课设的过程也是学习的过程,学习的过程是相互讨论共同进步的,多多讨论课题中遇到的问题,可以巩固我们的知识掌握能力,增加熟练运用度。
在完成这次课程设计过程中学到了许多东西,进一步理解了滤波器设计方法和各参数意义,通过分析信号时域和频域的关系等,加深了对滤波性能的理解,而且学会了使用Matlab一些基本函数,增加了进一步学习Matlab软件的兴趣。
在开学刚学习数字信号处理的时候,还感觉有点困难,后来经过王老师在课堂上生动细致详细地讲解与实验时耐心的指导,我对数字信号处理的学习兴趣越来越浓。
真的要好好感谢王老师。
通过这次课程设计,检验了自己这学期数字信号处理的学习成果,锻炼了自己设计、编程能力。
同时也锻炼了自己解决问题与处理问题的能力。
对以后的学习工作受益匪浅。
参考文献
[1]丁玉美.《数字信号处理》.西安电子科技大学出版社.西安.2008年
[2]A.V.奥本海姆.《数字信号处理》,.科学出版社.北京.2009年
[3]程佩青.《数字信号处理教程》.清华大学出版社出版.北京.2007年
[4]程佩青.数字信号处理教程(第三版).清华大学出版社.2007年2月
[5]钱同惠.数字信号处理.机械工业出版社.2005年2月
[6]胡广书.《数字信号处理——理论、算法与实现(第二版)》.电子工业出版社.北京.2008年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号课程设计空气主频率柱 洛阳理工汇编 数字信号 课程设计 空气 主频 洛阳 理工 汇编