13年地大数字信号处理要点Word文件下载.docx
- 文档编号:22931201
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:31
- 大小:612.18KB
13年地大数字信号处理要点Word文件下载.docx
《13年地大数字信号处理要点Word文件下载.docx》由会员分享,可在线阅读,更多相关《13年地大数字信号处理要点Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
进一步对离散信号卷积算法的理解。
算法原理:
把冲激响应h(n)与输入序列x(n)分别输入到程序中,然后调用离散卷积函数y=conv(x.,h)即可得到所要求的结果。
离散卷积定义为
当序列为有限长时则
3:
程序代码
x1=[1111];
nx1=0:
3;
h1=[10.80.640.8^30.8^4];
nh1=0:
4;
y1=conv(x1,h1);
subplot(3,3,1);
stem(nx1,x1);
title('
序列x1'
);
xlabel('
n'
ylabel('
x1(n)'
subplot(3,3,2);
stem(nh1,h1);
序列h1'
h1(n)'
subplot(3,3,3);
stem(y1);
序列y1'
y1(n)'
x2=[1111];
nx2=0:
nh2=0:
1:
20;
h2=(0.8).^nh2;
y2=conv(x2,h2);
subplot(3,3,4);
stem(nx2,x2);
序列x2'
x2(n)'
subplot(3,3,5);
stem(nh2,h2);
序列h2'
h2(n)'
subplot(3,3,6);
stem(y2);
序列y2'
y2(n)'
);
nx3=0:
x3=1.^nx3;
nh3=0:
h3=(0.8).^nh3;
y3=conv(x3,h3);
subplot(3,3,7);
stem(nx3,x3);
序列x3'
xlabel('
x3(n)'
subplot(3,3,8);
stem(nh3,h3);
序列h3'
h3(n)'
subplot(3,3,9);
stem(y3);
序列y3'
y3(n)'
4:
结果分析
1-2离散傅里叶变换及应用
设有离散序列x(n)=cos(0.48πn)+cos(0.52πn)
分析下列三种情况下的幅频特性。
(1)采集数据长度N=16,分析16点的频谱,并画出幅频特性。
采集数据长度N=16,并补零到64点,分析其频谱,并画出幅频特性。
(2)采集数据长度N=64,分析64点的频谱,并画出幅频特性。
观察三幅不同的幅频特性图,分析和比较它们的特点及形成原因。
实习目的及相关算法
实习目的:
(1)了解DFT及FFT的性质和特点。
(2)利用FFT算法计算信号的频谱。
相关算法:
读入离散序列x(n)采集长度为N=16的数据,调用matlab中的函数fft(x,16)与fft(x,64)对其作离散傅里叶变换得到16点、64点的频谱采集数据长度为N=64,,调用matlab中的函数fft(x,46)对其作离散傅里叶变换得到64点的频谱。
相关实现代码
n=0:
15;
n1=n;
x1=cos(0.48*pi*n)+cos(0.52*pi*n);
g1=abs(fft(x1,16));
subplot(3,2,1);
stem(x1);
x1'
subplot(3,2,2);
stem(g1);
g1'
n2=n;
x2=cos(0.48*pi*n2)+cos(0.52*pi*n2);
x2=[x2zeros(1,48)];
g2=abs(fft(x2,64));
subplot(3,2,3);
stem(x2);
x2'
subplot(3,2,4);
stem(g2);
g2'
n3=n;
x3=cos(0.48*pi*n3)+cos(0.52*pi*n3);
g3=abs(fft(x3,64));
subplot(3,2,5);
stem(x3);
x3'
subplot(3,2,6);
stem(g3);
g3'
运行结果
1-3:
IIR滤波器的设计
(1)设计一个Butterworth数字低通滤波器,设计指标如下:
通带截止频率:
0.2π,幅度衰减不大于1分贝
阻带截止频率:
0.3π,幅度衰减大于15分贝
(2)分析不同滤波器的特点和结果。
(3)编程设计实现IIR滤波器。
(1)掌握不同IIR滤波器的性质、特点。
(2)通过实验学习如何设计各种常用的IIR滤波器,以便在实际工作中能根据具体情况使用IIR滤波器。
输入通带截止频率Wp,阻带截止频率Ws,通带衰减Rp,阻带衰减Rs,通过这些数值调用[NWn]=buttord(Wp,Ws,Rp,Rs)函数计算巴特沃斯数字滤波器的阶数N和截止频率wn,再根据阶数N通过函数[b,a]=butter(N,Wn),即可得到所要的巴特沃斯滤波器。
设计一个正弦波信号,再调用函数A=filter(b,a,I)让正弦波信号通过滤波器,得到滤波信号。
3:
实验代码
Wp=0.2;
Ws=0.3;
Rp=1;
Rs=15;
[NWn]=buttord(Wp,Ws,Rp,Rs)%用于计算巴特沃斯数字滤波器的阶数N和截止频率wn
[b,a]=butter(N,Wn);
%计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a,设计所需的低通滤波器
[h,omega]=freqz(b,a,512);
%返回量h包含了离散系统频响,调用中若N默认,默认值为512。
plot(omega/pi,20*log10(abs(h)));
grid;
\omega/\pi'
Gain,dB'
IIRButterworthLowpassFilter'
[N1,Wn1]=buttord(Wp,Ws,Rp,Rs)%用于确定阶次
%用于直接设计巴特沃兹数字滤波器,即为IIR滤波器%
freqz(b,a);
t=1:
300;
I=sin(0.1*pi*t)+sin(0.4*pi*t);
%设计正弦波
figure;
plot(I);
A=filter(b,a,I);
%正弦波通过滤波器
plot(A);
4:
巴特沃斯滤波器单独运行结果
输入为滤波的正弦波信号以及滤波后的效果
1-4:
FIR低通滤波器的设计
选取合适窗函数设计一个线性相位FIR低通滤波器,使它满足如下性能指标:
通带截止频率:
ωp=0.5π,通带截止频率处的衰减不大于3分贝;
阻带截止频率:
ωs=0.66π,阻带衰减不小于40分贝
2实习目的及相关算法
(1)掌握用窗函数法设计FIR滤波器的原理和方法。
(2)熟悉线性相位滤波器特性。
(3)了解各种窗函数对滤波器特性的影响。
通过其通带截止频率ωp与阻带截止频率ωs算出其过渡带的宽度与滤波器的长度,从而得到理想滤波器的截止频率,根据所要求的理想滤波器,得到hd(n)。
由于其通带截止频率处的衰减不大于3分贝与阻带衰减不小于40分贝,我选择最接近的汉宁窗,最后调用函数h=hd.*win及freqz(h,1,512)得到实际汉宁窗的响应和实际滤波器的幅度响应。
实现代码
wp=0.5*pi;
ws=0.66*pi;
wdelta=ws-wp;
%过渡带宽度
N=ceil(8*pi/wdelta)%滤波器长度
ifrem(N,2)==0
N=N+1;
end
Nw=N;
wc=(wp+ws)/2;
%理想低通滤波器的截止频率
n=0:
N-1;
alpha=(N-1)/2;
m=n-alpha+0.00001;
hd=sin(wc*m)./(pi*m);
%一个响应
win=(hanning(Nw))'
;
%汉宁窗
h=hd.*win;
%实际汉宁窗的响应
freqz(h,1,512);
%实际滤波器的幅度响应
1-5综合实习
录制一段自己的语音信号,并对录制的信号进行采样;
画出采样后语音信号的时域波形和频谱图;
给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;
然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
回放语音信号;
最后,用MATLAB设计一信号处理系统界面。
(1)能够对之前四个实习中的内容加以很好的应用
(2)锻炼自己的实际能力,使其不在局限简单的小模块
调用函数functionpushbutton1_Callback(hObject,eventdata,handles)实现一个信号处理系统界面。
选择左键时,用双线性变换法设计滤波器来对信号进行处理,选择右键时,用窗函数法设计滤波器来对信号进行处理。
读取语音信号,对语音信号进行f=8000的频率进行采样,调用函数y1=fft(x1,2048)对所采集的点做2048点FFT变换。
先设计butterworth模拟滤波器,再用双线性变换法实现模拟滤波器到数字滤波器的转换。
最后调用函数f1=filter(bz,az,x2)对加了噪声的语音信号进行滤波,得到滤波后的频谱图。
functionvarargout=ts(varargin)
%TSM-fileforts.fig
%TS,byitself,createsanewTSorraisestheexisting
%singleton*.
%
%H=TSreturnsthehandletoanewTSorthehandleto
%theexistingsingleton*.
%TS('
CALLBACK'
hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinTS.Mwiththegiveninputarguments.
Property'
'
Value'
...)createsanewTSorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforets_OpeningFunctiongetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtots_OpeningFcnviavarargin.
%*SeeGUIOptionsonGUIDE'
sToolsmenu.Choose"
GUIallowsonlyone
%instancetorun(singleton)"
.
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Copyright2002-2003TheMathWorks,Inc.
%Edittheabovetexttomodifytheresponsetohelpts
%LastModifiedbyGUIDEv2.522-Nov-201310:
55:
52
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
'
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@ts_OpeningFcn,...
gui_OutputFcn'
@ts_OutputFcn,...
gui_LayoutFcn'
[],...
gui_Callback'
[]);
ifnargin&
&
ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforetsismadevisible.
functionts_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstots(seeVARARGIN)
%Choosedefaultcommandlineoutputforts
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakestswaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=ts_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%---Executesonbuttonpressinpushbutton1.
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton1(seeGCBO)
[x1,fs]=wavread('
语音.wav'
wavplay(x1,fs);
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
fs=8000;
%语音信号采样频率为8000
t=(0:
length(x1)-1)/8000;
y1=fft(x1,2048);
%对信号做2048点FFT变换
f=fs*(0:
1023)/2048;
figure
(1);
subplot(2,2,1);
plot(t,x1);
%做原始信号的时域波形
gridon;
axistight;
原始语音信号'
time(s)'
幅度'
subplot(2,2,2);
plot(f,abs(y1(1:
1024)));
%做原始信号的FFT频谱
原始语音信号的FFT频谱'
Hz'
%双线性变换法设计的巴特沃斯滤波器
A1=0.05;
A2=0.10;
d=[A1*cos(2*pi*3800*t)+A2*sin(2*pi*3600*t)]'
d(:
2)=d(:
1);
x2=x1+d;
wp=0.8*pi;
ws=0.85*pi;
Fs=8000;
Ts=1/Fs;
wp1=2/Ts*tan(wp/2);
%将模拟指标转换为数字指标
ws1=2/Ts*tan(ws/2);
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'
s'
%选择滤波器最小阶数
[Z,P,K]=buttap(N);
%创建butterworth模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K);
[b,a]=lp2lp(Bap,Aap,Wn);
[bz,az]=bilinear(b,a,Fs);
%用双线性法实现模拟到数字的转换
[H,W]=freqz(bz,az);
%绘制频率响应曲线
subplot(2,2,3);
plot(W*Fs/(2*pi),abs(H));
频率(Hz)'
频率响应'
Butterworth'
f1=filter(bz,az,x2);
figure
(2);
plot(t,x2);
%画出滤波前的时域图
滤波前的时域波形'
plot(t,f1);
%画出滤波后的时域图
滤波后的时域波形'
y3=fft(f1,2048);
y2=fft(x2,2048);
subplot(2,2,3);
plot(f,abs(y2(1:
%画出滤波前的频谱图
滤波前的频谱'
subplot(2,2,4)
plot(f,abs(y3(1:
%画出滤波后的频谱图
滤波后的频谱'
wavplay(f1,fs);
%---Executesonbuttonpressinpushbutton3.
functionpushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton3(seeGCBO)
figure
(1);
subplot(2,1,1);
plot(t,x1);
原始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 数字信号 处理 要点