课设题目数字听诊器信号分析Word文件下载.docx
《课设题目数字听诊器信号分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《课设题目数字听诊器信号分析Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
一个线性位移不变系统的输出序列Y(n)和输入序列X(n)之间的关系,应满足常系数线性差分方程:
式中,X(n)为输入序列;
Y(n)为输出序列;
和为滤波器系数;
N为滤波器阶数。
若所有的均为0,则得到FIR滤波器的差分方程为
FIR滤波器的结构图如下:
3)离散傅里叶变换DFT
即有限长序列的离散频域表示
4)信号通过滤波器,相当于信号与系统的冲击响应做卷积,等于信号的DFT与系统冲击响应的DFT做乘积。
所得的时域或频域表达式即响应的时域或频域的表达式。
2.设计方案
1)利用GUI界面的edittext和statictext可以完成病人个人信息的输入。
2)数据的采集可以使用对语音信号的b=11025点的抽样,然后计算出一共的采样点数N,对采集后的数字信号进行N点的离散傅里叶变换DFT,即可以求出所采集信号的频谱。
3)fir数字滤波器设计示例:
n=251;
%阶数,n越大频率响应边缘越陡,计算时间越长。
f=[00.080.11];
%把频率轴分为三个区域,
a=[010];
%三个区域为阻、通、阻
up=[0.0051.020.05];
%三个区域的幅度上限
lo=[00.980];
%三个区域的幅度下限
h=fircls(n,f,a,up,lo)'
;
%冲激响应h(t)
按此方法即可设计低通,带通,带阻等不同功能的fir数字滤波器。
三.课程设计的步骤和结果
1、界面设计
2、代码编写
1)性别输入框
此部分采用radiobutton和buttongroup共同进行设计,以求达到“男”“女”两种性别二选一目的,代码如下:
functionuipanel1_CreateFcn(hObject,eventdata,handles)
switchget(hObject,'
Tag'
);
case'
radiobutton1'
%按钮1的tag
'
radiobutton2'
<
='
0'
End
2)“开始诊断”键
此键以实现对听诊声音的采集,频谱的生成,然后在axis1中显示出来,代码如下:
functionpushbutton1_Callback(hObject,eventdata,handles)
globalxbNAMP;
b=11025;
button_state=get(hObject,'
Value'
ifbutton_state==get(hObject,'
Max'
)
[FileNamePathName]=uigetfile({'
*.wav'
'
signalFiles(*.wav)'
'
*.*'
AllFiles(*.*)'
},'
ChooseaFile'
filer=fullfile(PathName,FileName);
[xb]=wavread(filer);
N=length(x);
f=(-N/2:
N/2-1)/N*b;
X=fftshift(fft(x,N));
AMP=abs(X);
axes(handles.axes1);
%选择一个axes,用它的tag来选中它
plot(f,AMP);
set(handles.axes1,'
XminorTick'
on'
%顺便设置一下它的属性
gridon;
%加上网格
end
3)“低通”键
此键读取用户输入的低通滤波器的参数,生成滤波器,然后产生经过低通滤波器的信号的波形,画在axis2中。
其中包括一个弹窗设计,当输入的参数超过信号的范围时,弹窗报错误,代码如下:
functionpushbutton2_Callback(hObject,eventdata,handles)
fc=str2double(get(handles.edit5,'
string'
));
if(fc>
b*(1/2-1/N))||(fc<
0);
errordlg('
请输入一个符合频率范围的正频率'
ERROR'
else
pv=(-N/2:
part=fc*N/b/(N/2-1);
%fir滤波器分段的参数
n=251;
f=[0part1];
,
a=[10];
up=[1.020.05];
lo=[0.980];
h=fircls(n,f,a,up,lo)'
H=fftshift(fft(h,N));
Y=X.*H;
AMP3=abs(Y);
axes(handles.axes2);
%选择你的一个axes,自然,用它的tag来选中它
plot(pv,AMP3);
%这时,所画的图就到它上面了
set(handles.axes2,'
end
4)“带通”“带阻”键
此键以实现读取用户的滤波器参数,生成对应的滤波器,生成波形,显示在axis2中,其中也包括一个错误弹窗设计,代码如下:
带通:
functionpushbutton3_Callback(hObject,eventdata,handles)
f1=str2double(get(handles.edit6,'
f2=str2double(get(handles.edit7,'
if(f1>
b*(1/2-1/N))||(f1<
0)||(f2>
b*(1/2-1/N))||(f2<
0);
part1=f1*N/b/(N/2-1);
part2=f2*N/b/(N/2-1);
f=[0part1part21];
a=[010];
up=[0.0051.020.05];
lo=[00.980];
带阻:
functionpushbutton4_Callback(hObject,eventdata,handles)
a=[101];
%三个区域为通、阻、通
up=[1.020.051.02];
lo=[0.9800.98];
%选择一个axes,自然,用它的tag来选中它
5)“输出”键
此键以实现对于用户输入的频率值,输出所对应的幅度值,其中同样包括一个错误弹窗,代码如下:
functionpushbutton5_Callback(hObject,eventdata,handles)
globalbNAMP;
f=str2double(get(handles.edit8,'
if(f>
b*(1/2-1/N))||(f<
cxf=fix(f*N/b+N/2);
a=AMP(cxf,1);
set(handles.edit9,'
num2str(a));
四.课程设计总结
DFT可以对有限长序列进行处理,产生离散频域表示。
这适合对广泛应用数字信号进行处理,加之DFT的快速算法FFT,更使得DFT使用的更广泛。
。
信号通过系统,得到的响应,等于信号与系统的冲击响应在时域里卷积,得到的是响应的时域表示;
也等于信号与系统的频谱在频域里乘积,得到的是响应的频域表示。
fir滤波器可保证线性相位,对不同频率的分量的延迟相同,保证了信号不失真。
MATLAB的功能很强大,可用于电子,通信,图像等领域的信号处理与系统设计。
要精通MATLAB并不是件很容易的事,这得花较多的时间来研究和分析。
五.设计体会
通过这次课设是我熟悉了matlab的GUI界面功能,对matlab的一些函数有了基本的认识,对matlab有了新的认识。
在设计的过程中,遇到了很多问题,很多地方需要想别人请教。
在遇到问题,解决问题的过程中,也学到了很多东西。
经过这次课设计,我更加深刻的认识到知识在实践中的应用是一个复杂且重要的过程,锻炼了自己的动手能力,为自己在
六.参考文献
1赵淑清.信号与系统.哈尔滨工业大学出版社,2008:
29-241
2郑君里.信号与系统引论.高等教育出版社,2009:
377-407
3董绍平.数字信号处理基础.哈尔滨工业大学出版社,1996:
6-21,78-96
4教程:
GUI保存GUI中的Plot图形.
1.不要自己写,要利用word来自动生成。
详情请看最后一页