数字信号处理课程设计任务Word文档下载推荐.docx
《数字信号处理课程设计任务Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计任务Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
请设计一滤波器提取该正弦信号并对其进行频谱分析;
题目三、已知一个方波信号(可以假设频率为160Hz,幅度为1),混有方差为2的白噪声,请设计滤波器,提取该信号;
并采用快速卷积的方法对信号进行滤波(见教学参考书的第五章数字滤波器的基本结构5.3节FIR滤波器的基本结构四、快速卷积结构);
将滤波后的信号与原方波信号进行比较。
题目四、ZFFT算法:
对正弦信号
用采样频率100kHz进行采样,打算对其进行频谱分析,由于用采样硬件(FPGA)直接进行FFT,为了节省资源,只能进行1024点FFT运算,由于频率分辨力为100Hz左右,在频谱上并不能分开这两个信号,我们将采样的信号与复指数信号
进行相乘(即调制);
然后用低通滤波器(截至频率可以选择为1024Hz)对其进行滤波,这样我们将被测信号的频谱搬移到0频率,然后我们对滤波后的信号重新采样;
再进行1024点的FFT运算,这时频率分辨力为1Hz,应该能够分辨这两个频率很靠近的正弦信号。
请将这一处理过程用MATLAB仿真完成。
题目五、假设有方波信号与正弦信号相乘
并混有白噪声;
设计滤波器对其进行滤波,提出信号,对其进行频谱分析,观察其频谱,看一看这个信号的频谱有什么特征;
;
题目六、人能听到的声音的频率范围一般是20Hz~20kHz,但是我们听到的语音、乐音要低于这个频率范围,现在我们有一首歌曲“爸爸的草鞋.wav”,采样频率为44100Hz;
请完成以下处理
(1)将歌曲重新用8000Hz频率采样,然后播放处理后的声音数据,听听发生了什么,为什么?
(2)分析歌曲的频谱,通过频谱分析去解释歌手张明敏的嗓音特点.
(3)设计滤波器,弱化伴奏乐音。
题目七、现在我们有一首歌曲“北京北京.wav”,采样频率为44100Hz;
(1)将歌曲重新用2000Hz频率采样,然后播放处理后的声音数据,听听发生了什么,为什么?
(2)分析歌曲的频谱,通过频谱分析去解释歌手黄勇与梁博的嗓音特点.
(3)设计滤波器,强化伴奏乐音。
题目八、现在我们有两首歌曲“体会.wav和CrazyFaith.wav”,采样频率为44100Hz;
(2)分析歌曲的频谱,通过频谱分析去解释男女歌手的嗓音特点.
(3)根据上面的分析,提出一个方案,对歌手通过声音进行自动识别
题目九、现在我们有一首歌曲“滴答.wav”,采样频率为44100Hz;
(1)给歌曲加上10kHz的干扰,并进行播放。
(2)分析歌曲的频谱,通过频谱分析去解释女歌手的嗓音特点.
(3)根据上面的分析,设计滤波器对干扰进行滤除。
题目十、现在我们有一首歌曲“梦田.wav”,采样频率为44100Hz;
(1)分析歌曲的频谱,通过频谱分析去解释女歌手(潘越云和齐豫)嗓音的不同.
(2)录制自己的声音数据(唱歌,说话也可以),比较一下同组同学声音特点。
(3)给出一个方案对录制的声音进行识别
题目十一、现在我们有一首歌曲“天下最美的草原.wav”,采样频率为44100Hz;
(1)分析歌曲的频谱,通过频谱分析去解释歌手(呼斯楞)嗓音特点.
(3)将同组的男同学的声音频谱向高频搬移1kHz,女同学向低频搬移500Hz,播放修改的声音数据,听听发生了什么,为什么?
相关的音乐文件可以到网盘去下载,账号:
hustjtj@
在网盘的数字信号处理\数字信号处理课程设计\音乐文件目录下。
也可以用U盘到老师那里去拷贝。
参考资料:
1、用完全设计法设计数字滤波器
Fs=60*512;
t=0:
1/Fs:
0.2;
y=5*sin(2*pi*50*t)+2*sin(2*pi*150*t)+10*sin(2*pi*1000*t);
%设计椭圆低通滤波器,根据要求,分离第一个信号的滤波器
%通带内最大衰减纹波Rp=0.1db,阻带内最小衰减Rs=60dB
%通带为0~60Hz,阻带为140Hz至fs/2,一塌糊涂
Rp=0.1;
Rs=60;
Wp=60;
Ws=140;
%确定滤波器的阶数
[n,Wn]=ellipord(Wp/(Fs/2),Ws/(Fs/2),Rp,Rs,'
z'
);
%设计滤波器
[b1,a1]=ellip(n,Rp,Rs,Wn)
%计算设计低通滤波器的幅度频率响应
[h1,w1]=freqz(b1,a1,1024,Fs);
%用设计的低通滤波器对信号y进行滤波得到信号yn1
yn1=filter(b1,a1,y);
firpmParks-McClellanoptimalFIRfilterdesign
b=firpm(n,f,a)returnsrowvectorbcontainingthen+1coefficientsoftheordernFIRfilterwhosefrequency-amplitudecharacteristicsmatchthosegivenbyvectorsfanda.
Theoutputfiltercoefficients(taps)inbobeythesymmetryrelation:
b(k)=b(n+2-k),k=1,…,n+1
Vectorsfandaspecifythefrequency-magnitudecharacteristicsofthefilter:
fisavectorofpairsofnormalizedfrequencypoints,specifiedintherangebetween0and1,where1correspondstotheNyquistfrequency.Thefrequenciesmustbeinincreasingorder.aisavectorcontainingthedesiredamplitudesatthepointsspecifiedinf.Thedesiredamplitudeatfrequenciesbetweenpairsofpoints(f(k),f(k+1))forkoddisthelinesegmentconnectingthepoints(f(k),a(k))and(f(k+1),a(k+1)).Thedesiredamplitudeatfrequenciesbetweenpairsofpoints(f(k),f(k+1))forkevenisunspecified.Theareasbetweensuchpointsaretransitionor"
don'
tcare"
regions.fandamustbethesamelength.Thelengthmustbeanevennumber.Therelationshipbetweenthefandavectorsindefiningadesiredfrequencyresponseisshownintheillustrationbelow.
Examples
desiredandactualfrequencyresponsesofa17th-orderParks-McClellan
bandpassfilter:
f=[00.30.40.60.71];
a=[001100];
b=firpm(17,f,a);
[h,w]=freqz(b,1,512);
plot(f,a,w/pi,abs(h))
legend('
Ideal'
'
firpmDesign'
)
[n,f0,mo,w]=remezord(f,m,dev,Fs);
Rp=3,Rs=40;
Fs=20000;
f=[500]
EXAMPLE
Designalowpassfilterwithapassband-edgefrequencyof1500Hz,a
stopband-edgeof2000Hz,passbandrippleof0.01,stopbandripple
of0.1,andasamplingfrequencyof8000Hz:
[n,fo,mo,w]=firpmord([15002000],[10],[0.010.1],8000);
b=firpm(n,fo,mo,w);
Thisisequivalentto
c=firpmord([15002000],[10],[0.010.1],8000,'
cell'
b=firpm(c{:
});
2、用simulink仿真验证
用simulink进行仿真验证
启动simulink
在simulink的库中打开Sources库中找到SineWave发生器,放三个在仿真文件中,双击进行参数设置,sinetype设为TimeBased,Time设为Usesimulationtime,Amplitude设为5,Bias设为0,Frequency设为2*pi*50,Phase设为0,Sampletime设为0;
同样方法设置另外两个正弦发生器。
打开CommonlyUsedBolck库找到sum元件,放到仿真文件,双击进行参数设置,IconShape设为round,Listofsigns设为|+++,Sampletime设为-1。
打开Discrete库找到DiscreteFilter,放三个在仿真文件中,双击进行参数设置,
Numerator设为[b1],Denominator设为[a1],Sampletime设为1/Fs。
打开Sinks库找到Scope,放到仿真文件中
如上图进行连线。
3、用扬声器放音,麦克录音函数
recObj=audiorecorder(44100,16,2);
get(recObj)
%Collectasampleofyourspeechwithamicrophone,andplotthesignaldata:
%Recordyourvoicefor5seconds.
recObj=audiorecorder;
disp('
Startspeaking.'
recordblocking(recObj,5);
EndofRecording.'
%Playbacktherecording.
play(recObj);
%Storedataindouble-precisionarray.
myRecording=getaudiodata(recObj);
%Plotthewaveform.
plot(myRecording);
4、将wave文件读入,用sound放音
wavreadReadMicrosoftWAVE("
.wav"
)soundfile.
Y=wavread(FILE)readsaWAVEfilespecifiedbythestringFILE,
returningthesampleddatainY.The"
extensionisappended
ifnoextensionisgiven.
[Y,FS,NBITS]=wavread(FILE)returnsthesamplerate(FS)inHertz
andthenumberofbitspersample(NBITS)usedtoencodethe
datainthefile.
[...]=wavread(FILE,N)returnsonlythefirstNsamplesfromeach
channelinthefile.
[...]=wavread(FILE,[N1N2])returnsonlysamplesN1throughN2from
eachchannelinthefile.
[Y,...]=wavread(...,FMT)specifiesthedatatypeformatofYused
torepresentsamplesreadfromthefile.
IfFMT='
double'
Ycontainsdouble-precisionnormalizedsamples.
native'
Ycontainssamplesinthenativedatatype
foundinthefile.InterpretationofFMTiscase-insensitive,
andpartialmatchingissupported.Ifomitted,FMT='
.
SIZ=wavread(FILE,'
size'
)returnsthesizeoftheaudiodatacontained
inthefileinplaceoftheactualaudiodata,returningthe
2-elementvectorSIZ=[sampleschannels].
[Y,FS,NBITS,OPTS]=wavread(...)returnsastructureOPTSofadditional
informationcontainedintheWAVfile.Thecontentofthis
structurediffersfromfiletofile.Typicalstructurefields
include'
.fmt'
(audioformatinformation)and'
.info'
(text
whichmaydescribetitle,author,etc.)
OutputScaling
TherangeofvaluesinYdependsonthedataformatFMTspecified.
Someexamplesofoutputscalingbasedontypicalbit-widthsfound
inaWAVfilearegivenbelowforboth'
and'
formats.
FMT='
#BitsMATLABdatatypeDatarange
-------------------------------------------------
8uint8(unsignedinteger)0<
=Y<
=255
16int16(signedinteger)-32768<
=+32767
24int32(signedinteger)-2^23<
=2^23-1
32single(floatingpoint)-1.0<
=+1.0
N<
32double-1.0<
+1.0
N=32double-1.0<
Note:
Valuesinymightexceed-1.0or+1.0forthecaseof
N=32bitdatasamplesstoredintheWAVfile.
Supportsmulti-channeldata,withupto32bitspersample.
SupportsMicrosoftPCMdataformatonly.
Seealsowavwrite,auread,auwrite.
clearall;
closeall;
clc
[a,fs,bit]=wavread('
c:
\MATLAB6p5\work\陪你一起看草原.wav'
size(a);
y1=a(:
1);
a1=y1(10000:
60000)
figure;
subplot(2,1,1),plot(a);
subplot(2,1,2),plot(a1);
x1=resample(a1,2,1);
%y=resample(x,p,q)返回量的长度是向量x的p/q倍
sound(x1,fs);
%sound(a,fs);
Audioread(2012b以上版本,可以读取mp3文件)
5、mp3文件的处理
MATLAB读取音频文件并进行音频特征提取
(2013-04-0116:
40:
18)
转载▼
标签:
matlab
特征提取
it
分类:
MATLAB音乐识别
1、用audioread('
'
函数读取电脑中的音频文件,参数是音频文件的路径:
[sampledata,FS]=audioread('
F:
\1.mp3'
sampledata保存音频信号数据,FS是音频采样率,MP3格式的采样率一般为44100;
2、判断音频数据是否是双声道,如果是双声道则保留一个声道的数据,用calsample.m文件的函数完成此功能,文件内容如下:
functionsample=calsample(sampledata,FS)
temp_sample=resample(sampledata,1,FS/11025);
[m,n]=size(temp_sample);
if(n==2)
sample=temp_sample(:
else
sample=temp_sample;
end
3、对音频数据进行快速傅里叶变换得到频谱图,并选取scope区域内的能量最大并且能量增幅最大的点作为峰值点,进行特征提取,keypoint.m文件内容如下:
functionpoint=keypoint(sample,scope)
%对音频数据进行快速傅里叶变换,得到变换后的数据为b,频率为f,时间为t
[b,f,t]=specgram(sample,1024,11025,hanning(1024),256);
specgram(sample,1024,11025,hanning(1024),256);
%绘制频谱图
holdon;
energy=abs(b);
%根据快速傅里叶变换后的数据进行能量计算
%energy=sample;
diffenergy=caldiffenergy(energy);
%计算能量差分
[m,n]=size(energy);
%获取能量矩阵的大小
%f=(0:
4);
%t=(0:
f_unit=max(f)/(length(f)-1);
%根据频率点个数计算频率单位长度
t_unit=max(t)/(length(t)-1);
%根据时间点个数计算时间单位长度
k=1;
l=1;
p=1;
num=1;
point.t=0;
point.f=0;
%point结构体数组用来保存峰值点
temp.t=0;
temp.f=0;
%temp结构体数组用来保存计算中的临时点
count=0;
%count为零表示在当前scope中未找到峰值点
x_f=0;
y_t=0;
plot(x_f,y_t);
fori