数字信号处理课程设计任务Word文档下载推荐.docx

上传人:b****5 文档编号:18378235 上传时间:2022-12-15 格式:DOCX 页数:13 大小:33.03KB
下载 相关 举报
数字信号处理课程设计任务Word文档下载推荐.docx_第1页
第1页 / 共13页
数字信号处理课程设计任务Word文档下载推荐.docx_第2页
第2页 / 共13页
数字信号处理课程设计任务Word文档下载推荐.docx_第3页
第3页 / 共13页
数字信号处理课程设计任务Word文档下载推荐.docx_第4页
第4页 / 共13页
数字信号处理课程设计任务Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数字信号处理课程设计任务Word文档下载推荐.docx

《数字信号处理课程设计任务Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计任务Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

数字信号处理课程设计任务Word文档下载推荐.docx

请设计一滤波器提取该正弦信号并对其进行频谱分析;

题目三、已知一个方波信号(可以假设频率为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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1