北交数字信号研讨2部分.docx
- 文档编号:5172277
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:29
- 大小:571.76KB
北交数字信号研讨2部分.docx
《北交数字信号研讨2部分.docx》由会员分享,可在线阅读,更多相关《北交数字信号研讨2部分.docx(29页珍藏版)》请在冰豆网上搜索。
北交数字信号研讨2部分
《数字信号处理》课程研究性学习报告
姓名
学号
同组成员
指导教师
时间
DFT近似计算信号频谱专题研讨
【目的】
(1)掌握利用DFT近似计算不同类型信号频谱的原理和方法。
(2)理解误差产生的原因及减小误差的方法。
(3)培养学生自主学习能力,以及发现问题、分析问题和解决问题的能力。
【研讨题目】基本题
1.D大调和弦由频率为293.66,369.99,440Hz的正弦信号组成,即x(t)=cos(2πf1t)+cos(2πf2t)+cos(2πf3t)的频谱,其中f1=293.66Hz,f2=369.99Hz,f3=440Hz。
(1)确定合适的DFT参数。
(2)利用DFT分析其频谱,并比较不同窗函数对谱分析结果的影响。
(3)若乐曲全音符的持续时间为0.2s,该和弦为16分音符,利用DFT分析其频谱会出现什么问题?
【题目分析】
【仿真结果】
【结果分析】
对实验结果进行比较,总结出选择合适DFT参数的原则。
【自主学习内容】
【阅读文献】
【发现问题】(专题研讨或相关知识点学习中发现的问题):
【问题探究】
【仿真程序】
【研讨题目】基本题
2.已知某离散序列为x[k]=cos(Ω0k)+0.75cos(Ω1k),0£k£63其中Ω0=0.4π,Ω1=Ω0+π/64
(1)对x[k]做64点FFT,画出此时信号的频谱。
(2)如果
(1)中显示的谱不能分辨两个谱峰,是否可对
(1)中的64点信号补零而分辨出两个谱峰。
通过编程进行证实,并解释其原因。
(3)给出一种能分辨出信号中两个谱峰的计算方案,并进行仿真实验。
(M2-4)
【温磬提示】
在计算离散非周期序列频谱时常用Ω/π作为横坐标,称Ω/π为归一化频率(normalizedfrequency)。
在画频谱时需给出横坐标。
每幅图下都需给出简要的文字说明。
由于离散非周期序列频谱是周期的,所以在计算时不需要用fftshift函数对fft计算的结果进行重新排列。
【序列频谱计算的基本方法】
【题目分析】
分析影响谱峰分辨率的主要因素,进一步认识补零在在频谱计算中的作用。
x[k]可以看成是x(t)=cos(Ω0t)+0.75cos(Ω1t)T=1s抽样后的结果。
那么能分辨两个谱峰最小的抽样点数是2π/(Ω1-Ω0)=128
【仿真结果】
【结果分析】
观察图形发现,在点数为64时不能分清两个谱峰,在补零位128、256、512后仍旧没有变化。
进行128点DFT,可以看出两个谱峰已经被分辨出。
所以要想分辨出频谱中的两个谱峰,可以增加序列时域的长度。
【自主学习内容】
如何减少离散非周期信号频谱混叠泄漏现象
【阅读文献】
《数字信号处理》(第三版)陈后金主编
【发现问题】(专题研讨或相关知识点学习中发现的问题):
问题一、二、三讨论的是离散信号频谱的计算问题。
与连续信号频谱计算问题相比较,其计算误差有何不同?
【问题探究】
离散信号频谱如果是连续信号频谱的周期倍,可能会产生混叠。
【仿真程序】
(1)w1=0.4*pi;
w2=w1+pi/64;
N=64
k=0:
N-1;
x=cos(w1*k)+0.75*cos(w2*k);
X=fft(x);
plot(k/N,abs(X));
gridon;
xlabel('Normalizedfrequencyof64DFT');
ylabel('Magnitude');
(2)k=0:
63;
L=128;
f1=0.4*pi;
f2=f1+pi/64;
x=cos(f1*k)+0.75*cos(f2*k);
x=[xzeros(1,L-length(x))];
X=fftshift(fft(x));
f=-pi:
2*pi/L:
pi-2*pi/L;
plot(f/pi,abs(X))
xlabel('Normalizedfrequencyof128DFT');
ylabel('Magnitude');
(3)w1=0.4*pi;
w2=w1+pi/64;
N=128;
L=128;
k=0:
N-1;
x=cos(w1*k)+0.75*cos(w2*k);
wn=(boxcar(N))';
xn=x.*wn;
Xn=fft(xn,L);
m=0:
L-1;
plot(m/L,abs(Xn));
xlabel('Normalizedfrequency');
ylabel('Magnitude');
gridon;
【研讨题目】基本题
3.已知一离散序列为x[k]=AcosΩ0k+Bcos((Ω0+∆Ω)k)。
用长度N=64的哈明窗对信号截短后近似计算其频谱。
试用不同的A和B的取值,确定用哈明窗能分辩的最小的谱峰间隔
中c的值。
(M2-3)
【题目分析】
本题讨论用哈明窗计算序列频谱时的频率分辨率。
Hamming窗函数的幅值有中心向两端逐渐减弱,因而其高频分量明显减小,频谱中旁瓣的幅度较小,主瓣峰值与第一个旁瓣峰值相对衰减很大,hamming窗以增加主瓣宽度来降低旁瓣能量,用hamming窗极端频谱时要求能分辨的谱峰的间隔Δƒ≥c/Tp=c*fs/N。
为使两个峰值间有明显差别,取A=5,B=1。
【仿真结果】
【结果分析】
将实验结果与教材中定义的窗函数的有效宽度相比较,发表你的看法。
由于信号中存在一个较弱的频率分量,可以用hamming窗来减小旁瓣引起的频率泄露,但当c=2时并不能分辨出两个谱峰,由图形可以看出能分辨出图形的c的最小值为c=2.5,随着A与B比例的增加,即两个幅值分量的差距增大,频谱更加难以分辨,频率泄露越大,失真越大。
【自主学习内容】
Matlab窗函数的使用
【阅读文献】
《数字信号处理》(第三版)陈后金主编
【发现问题】(专题研讨或相关知识点学习中发现的问题):
fftshift的作用正是让正半轴部分和负半轴部分的图像分别关于各自的中心对称。
因为直接用fft得出的数据与频率不是对应的,fftshift可以纠正过来
【问题探究】
在离散序列频谱计算中为何要用窗函数?
用不同的窗函数对计算结果有何影响?
与矩形窗相比哈明窗有何特点?
如何选择窗函数?
我们要用窗函数对无限长的信号的截断,不同的窗函数有不同的影响,比如哈明窗与矩形窗相比,主瓣宽度加大加上旁瓣泄露,就是牺牲频谱的分辨率减少频谱的泄露。
因此,我们在加窗截断的时候一定要采用合理的窗函数。
【仿真程序】
k=0:
63;
A=input('A=');
B=input('B=');
c=input('c=');
N=64;
L=512;
x=A*cos(0.1*pi*k)+B*cos((0.1*pi+c*2*pi/N)*k);
wh=(hamming(N))';
x=x.*wh;
X=fftshift(fft(x,L));
fs=30;ws=2*pi*fs
m=(-ws/2+(0:
L-1)*ws/L)/(2*pi);
plot(m,abs(X));
xlabel('Normalizedfrequency');
ylabel('Magnitude');
gridon;
title(['A=',num2str(A)'''B=',num2str(B)'''c=',num2str(c)]);
【研讨题目】中等题
4.各种乐器演奏音节的时频特性分析
(1)从下面乐器中选择三种,查找其演奏的曲目或音阶,存成wav格式(信号长度8秒即可)。
长笛,短笛,单簧管,低音单簧管,双簧管,萨克斯,低音萨克斯,大管,小号,长号,圆号,次中音号,大号,钢琴,定音鼓,军鼓,木琴,钢片琴,小提琴,中提琴,大提琴,贝斯提琴。
(2)分析你所选择乐器演奏音乐的频谱,对照乐谱,总结出你所选择乐器音节的基波频谱、谐波频率和幅度。
(3)画出你所选择乐器演奏音乐的时域波形,分析其包络特征,并给出包络拟合程序。
【音乐背景知识】
音乐是乐音随时间流动而形成的艺术,用信号专业术语来讲就是周期信号频率即某种指定规律的频谱结构随时间节奏变化的一种表述。
乐谱上的每一个音符表达了此时此刻规定出现的信号频率和持续时间。
乐音的基本特征可以用基波频率、谐波频率、包络波形几方面来描述。
1、乐音基波构成规律
我们平常读乐谱时唱出的1(do)、2(re)、3(mi)等并未固定基波频率,当指定乐曲的曲调时才知道此时对应的频率值。
比如C大调中“1”的基波频率为261.63Hz,F调中“1”的基波频率为349.23Hz,F调“5”的基波频率为523.25Hz。
上面那些频率值都是按照“十二平均律”计算导出的,钢琴是十二平均律制乐器,国际标准音规定,钢琴的a1键的频率是为440Hz;又规定每相邻半音的频率比值为21/12=1.059463,根据这规定,就可以得出钢琴上每一个琴键音的频率,图1是钢琴键盘和相应频率。
如与a1右边相邻#a1的频率是440×1.059463=466.16372Hz;再往上,b1的频率是493.088321Hz;c2的频率是523.25099......同理,与a1左边相邻的#g1的频率是440÷1.059463=415.030473Hz.....这种定音的方式就是“十二平均律”。
图1钢琴键盘和相应频率
2、音乐谐波的作用——音色
在乐音领域,称谐波为“泛音”,正是这些泛音决定了其不同的音色,使人能辨别出是不同的乐器发出的声音。
当指定音名(音调)之后仅指定了乐音信号的基波频率,谐波情况并未说明。
对于各种乐器如钢琴或吉他都可以发出某一音调,例如fA1=440Hz的乐音,而人的听觉会明显感觉两者的不同,这是由于谐波成分有所区别,频谱结构不同引起的,各种乐器都有自己的谐波分布规律,同种乐器不同音阶的谐波构成还可能略有区别。
3、音乐包络波形
包络是描述乐音特性的另一个重要因素。
各种乐器的包络大体上可以划分为以下几种类型:
连续型(风琴、弦乐)、弹奏型(钢琴、吉他)、击奏型(木琴、木鱼)、吹奏型(管乐)等。
不同类型的乐器,它们的包络形状也各不相同。
在音乐合成中,为简化编程,可以把复杂的包络函数用少量直线近似。
有时为了保证在乐音的邻接处信号幅度为零,也可以用指数衰减的包络来表示。
4、乐音持续时间
当知道了基波频率、谐波成分、包络形状后,还不能构成一首音乐,还必须知道每个乐音的持续时间。
每个音调都可以用连续的一段正弦信号并带有一小段静音(停顿)来表示。
停顿保证我们可以区分开连续的相同音调,每个音调的持续时间取决于它是全音符、二分之一音符、四分之一音符还是八分之一音符等等。
每个音符之间的停顿是相同的,不随音符的长度而变化。
【题目分析】
【仿真结果】
【结果分析】
【自主学习内容】
【阅读文献】
【发现问题】(专题研讨或相关知识点学习中发现的问题):
【问题探究】
【仿真程序】
[x,fs,bits]=wavread('钢琴曲-天空之城.wav',[1024307200]);
sound(x,fs,bits);
N=length(x);
X=fftshift(fft(x));
subplot311;plot((0:
N-1)*fs/N-fs/2,abs(X));xlim([01000]);
title('钢琴曲-天空之城.wav');
subplot312;plot((0:
N-1)*fs/N-fs/2,angle(X));xlim([01200]);
subplot313;plot(x);xlim([10242048]);
%
t=0:
N-1;
d=diff(x);
n=length(d);
d1=d(1:
n-1);
d2=d(2:
n);
indmin=find(d1.*d2<0&d1<0)+1;
indmax=find(d1.*d2<0&d1>0)+1;
envmin=spline(t(indmin),x(indmin),t);
envmax=spline(t(indmax),x(indmax),t);
figure
holdon;
plot(t,x);xlim([1000102400]);
title('钢琴曲-天空之城.wav');
plot(t,envmin,'r');
plot(t,envmax,'m');
holdoff;
包络
[x,fs,bits]=wavread('梁祝-萨克斯.wav',[1024307200]);
sound(x,fs,bits);
N=length(x);
X=fftshift(fft(x));
subplot311;plot((0:
N-1)*fs/N-fs/2,abs(X));xlim([01000]);
title('梁祝-萨克斯.wav');
subplot312;plot((0:
N-1)*fs/N-fs/2,angle(X));xlim([01200]);
subplot313;plot(x);xlim([10242048]);
%
t=0:
N-1;
d=diff(x);
n=length(d);
d1=d(1:
n-1);
d2=d(2:
n);
indmin=find(d1.*d2<0&d1<0)+1;
indmax=find(d1.*d2<0&d1>0)+1;
envmin=spline(t(indmin),x(indmin),t);
envmax=spline(t(indmax),x(indmax),t);
figure
holdon;
plot(t,x);xlim([1000102400]);
title('梁祝-萨克斯.wav');
plot(t,envmin,'r');
plot(t,envmax,'m');
holdoff;
包络
[x,fs,bits]=wavread('小提琴-D大调卡农.wav',[1024307200]);
sound(x,fs,bits);
N=length(x);
X=fftshift(fft(x));
subplot311;plot((0:
N-1)*fs/N-fs/2,abs(X));xlim([01000]);
title('小提琴-D大调卡农.wav');
subplot312;plot((0:
N-1)*fs/N-fs/2,angle(X));xlim([01200]);
subplot313;plot(x);xlim([10242048]);
%
t=0:
N-1;
d=diff(x);
n=length(d);
d1=d(1:
n-1);
d2=d(2:
n);
indmin=find(d1.*d2<0&d1<0)+1;
indmax=find(d1.*d2<0&d1>0)+1;
envmin=spline(t(indmin),x(indmin),t);
envmax=spline(t(indmax),x(indmax),t);
figure
holdon;
plot(t,x);xlim([1000102400]);
title('小提琴-D大调卡农.wav');
plot(t,envmin,'r');
plot(t,envmax,'m');
holdoff;
包络
【研讨内容】——扩展题
5.男女声音信号的转换
(1)采集若干男高音和女高音演唱的歌曲(wav格式)。
(2)对采集的音频信号进行频谱分析,并给出男高音和女高音的频率范围。
(3)研究男女声音信号转换的方法,将男高音演唱的歌曲转换成女高音演唱的歌曲。
【男女声音信号转换的方法】
经过整理统计可知女声基频=男声基频*1.5。
本程序使用的是通过抽样与插值的方式来达到基频的改变。
【仿真程序】
figure
(1);
[y,fs,nbits]=wavread('女高音.wav');
n=length(y);
Y=fft(y,n);
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
figure
(2);
[y,fs,nbits]=wavread('男高音.wav');
n=length(y);
Y=fft(y,n);
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
[x,f]=wavread('女高音.wav');
k=linspace(-f,f,length(x));
X=abs(fft(x));
plot(k,fftshift(X),'r');
holdon;
[y,fs]=wavread('男高音.wav');
k=linspace(-fs,fs,length(y));
Y=abs(fft(y));
plot(k,fftshift(Y)+1000);
[y,fs,nbits]=wavread('女高音.wav');
n=length(y);
Y=fft(y,n)/1.5;
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
[y,fs,nbits]=wavread('男高音.wav');
n=length(y);
Y=fft(y,n)*1.5;
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
【仿真结果】
女高音
男高音
对比
女变男
男变女
【结果分析】
有以上的图可知,男高音的频率比女高音的频率低。
【自主学习内容】
人说话时基频范围大约为100Hz~300Hz,男声较低,女声和童声的声道和喉头较高。
在合唱中,一般分四个声部,这四个声部的音域(频率范围)分别是:
女高音246.9Hz~987.8Hz,女低音164.8Hz~659.2Hz,男高音110Hz~440Hz,男低音73.4Hz~293.7Hz。
深沉的男低音发出的最低音的频率可达65.4Hz。
花腔女高音发出的最高音的频率可达1177.2Hz。
【阅读文献】
《数字信号处理》(第三版)陈后金主编
【发现问题】
如何用matlab识别男女声?
【问题探究】
在频谱分析图中,基音频率比较低的是男声,比较高的是女声。
【研讨题目】扩展题(选做)
6.本题研究连续周期信号频谱的近似计算问题。
周期为T0的连续时间周期信号x(t)可用Fourier级数表示为
其中
X(nω0)称为连续时间周期信号x(t)的频谱函数。
称为信号的基频(基波),
称为信号的谐波。
如果信号x(t)函数表达式已知,则可由积分得出信号的频谱。
如果信号x(t)函数表达式未知,或者x(t)函数表达式非常复杂,则很难由积分得信号的频谱。
本题的目的就是研究如何利用DFT近似计算连续时间周期信号的频谱。
(1)若在信号x(t)的一个周期T0内抽样N个点,即
,T为抽样周期(间隔),可获得序列x[k]
试分析序列x[k]的DFT与连续时间周期信号x(t)的频谱X(nω0)的关系;
(2)由
(1)的结论,给出由DFT近似计算周期信号频谱X(nω0)的方案;
(3)周期信号x(t)的周期T0=1,x(t)在区间[0,1]的表达式为
x(t)=20t2(1-t)4cos(12πt)
(a)试画出信号x(t)在区间[0,1]的波形;
(b)若要用10次以内的谐波近似表示x(t),试给出计算方案,并计算出近似表示的误差。
讨论出现误差的原因及减小误差的方法。
【题目分析】
根据“时域抽样,频域周期化”可知,x[k]的频谱x[m]是X(nω0)以
为周期周期化的结果。
【理论推导】
DFT计算所得结果X[m]与连续周期信号频谱X(nω0)的关系。
DFT计算所得结果X[m]与连续周期信号频谱X(nω0)的关系。
由于
于是得
令n=m+rN;m=0,1,2,…N-1,r为整数,上式可化为
化简可得
对比IDFT
可得
【计算方案】
根据理论推导结果设计近似计算方案。
分析产生误差的主要原因。
从上面的关系式可以看出X[m]是连续轴系信号频谱X(now)发生周期化,再乘上比例因子N所得,由于对于一般的连续周期信号的频谱,当n→±∞时,┃X(nwo0┃→0,所以用X[m]来近似为较低的谐波分量,当然这一过程中的误差很显然主要在于低次谐波分量与高次谐波分量发生的混叠。
如果在一个周期内取较多的抽样点N,可以提高与低频分量发生混叠的高频分量的频率值,高频分量如果足够高,也就是幅度值可以趋近于零,就可以进行有效的近似,其混叠误差也会有效地减少。
同时,在进行信号的重建时,谐波分量选取的次数的多少对误差也有影响。
对于一般的周期信号,通常时域是无限的,而我们只能选择次数较低的谐波分量(占有原信号的主要能量)进行信号重建,这是不可避免的会发生泄漏,产生误差。
【扩展分析】
如果周期信号x(t)是带限信号,即信号的最高频率分量为Mω0(是正整数),试确定在一个周期内的最少抽样点N,使得在频谱的计算过程当中不存在混叠误差。
与抽样定理给出的结论比较,发表你的看法。
由推出的理论关系式,频谱发生的是Now的周期化,原信号x(t)带限,最高频率分量为Mwo,考虑到想x(t)是实信号,一定也会有-Mwo分量,当N=2M时,频谱会发生混叠,所以选取N>2M,这是再将频谱周期化将不会发生混叠,这与抽样定理相似。
这个结果是抽样定理的结果,只是周期信号是一种特殊信号,当然也符合抽样定理。
只是不能取临界条件。
【仿真结果】
一个周期内抽样点个数不同,结果比较:
N=32时的近似情况和误差情况:
N=16时的近似情况和误差情况:
N=32时最大误差在
左右,平均误差不到
,而N=16时,最大误差接近0.15,平均误差接近0.07,可以看出N=32时的误差比N=16时的误差小得多,说明N=16时发生的混叠严重。
选取谐波分量的次数对实验近似的影响:
选取8次谐波分量,误差在0.03左右,平均误差在0.015左右,可以看出当只取8次谐波分量重建新号,已经有了相当的误差,只取六次谐波分量重建新号,误差已经很大了,所以选取合适次数的谐波进行信号重建也对信号是否能合理恢复有着很大的影响。
【结果分析】
讨论DFT点数对近似计算的影响,讨论所取谐波项的多少对近似计算的影响。
误差分析要给出定量的结果,如平均误差,最大误差等。
N=32时最大误差在
左右,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 研讨 部分
![提示](https://static.bdocx.com/images/bang_tan.gif)