【研讨内容】——中等题 题目2:分析音阶的频谱
(1) 录制你所喜欢乐器(如钢琴、小提琴等)演奏的音阶,并存为wav格式。 (2) 画出各音阶的时域波形,并进行比较。
(3) 对所采集的音阶信号进行频谱分析,比较各音阶的频谱。 【知识点】
连续时间信号的频域分析 【温馨提示】
利用MATLAB提供的函数fft计算频谱。
【题目分析】
每一个音阶由基波频率不同的正弦分量构成。在非正弦的周期性振荡中,包含基波和谐波。和该振荡周期相等的正弦波分量称为基波分量。相应于这个周期的频率称为基波频率。频率等于基波频率的整倍数的正弦波分量称为谐波。由于频率不同,将产生不同的音调。
【仿真程序】
%读取wav文件并画声音信号的频谱
[y,fs]=wavread('P_n5.wav');%读取P_n5.wav文件 y=y(:,1);N=length(y);n=0:N-1;t=n/fs;f=n*fs/N; subplot(211);plot(t,y)
xlabel('t/s');ylabel('x(t)');title(' P_n5音阶时域波形') Xabs=abs(fft(y,N))/N;Xabs=Xabs/max(Xabs); subplot(212);plot(f(1:N/2),Xabs(1:N/2)); xlabel('f/Hz');ylabel('X(jw)');title('音阶频域波形') grid on;axis([0 3000 0 1.1]);
%----------------------------------------------------------- %读取wav文件并画声音信号的频谱
[y,fs]=wavread('P_n7.wav');%读取P_n7.wav文件 y=y(:,1);N=length(y);n=0:N-1;t=n/fs;f=n*fs/N; subplot(211);plot(t,y)
xlabel('t/s');ylabel('x(t)');title(' P_n7音阶时域波形') Xabs=abs(fft(y,N))/N;Xabs=Xabs/max(Xabs); subplot(212);plot(f(1:N/2),Xabs(1:N/2)); xlabel('f/Hz');ylabel('X(jw)');title('音阶频域波形') grid on;axis([0 3000 0 1.1]);
10
【仿真结果】
11
【结果分析】
提示:应从以下几方面对结果进行分析:
(1) 你所选择乐器演奏的音阶,其时域波形的包络有何特点?
振幅短时间快速增长后,再缓慢衰减
(2) 你所选择乐器演奏的音阶,其频谱有何特点?基波是多少?谐波是多少? do re mi fa so la xi do2 基波 260 300 330 350 400 440 490 520 谐波 520 590 650 680 790 880 990 1050 780 890 980 1040 1190 1300 1480 1580 1050 1180 1300 1400 1570 1750 1980 2100 【自主学习内容】
1. 用MATLAB对声音信号进行时域和频域分析。
2. 研究学习并比较不同音阶信号,了解了其时频波形上的区别与规律。
【阅读文献】
[1]林丽莉[等].信号处理与系统分析综合实验教程[M].杭州 : 浙江大学出版社, 2013
[2]梁虹[等].信号与线性系统分析: 基于 MATLAB 的方法与实现[M].北京 : 高等教育出版社, 2006
【发现问题】
(1) 改变音阶的包络,相应音阶听起来会有什么变化? (2) 音阶频谱中的谐波分量有什么作用?
(3) 你所分析的乐器各音阶对应的频率是多少,之间存在什么关系? 【问题探究】
(1) 改变音阶的包络,相应音阶听起来会有什么变化?
音色,响度变化。
(2) 音阶频谱中的谐波分量有什么作用?
影响着音色
(3) 你所分析的乐器各音阶对应的频率是多少,之间存在什么关系?
音高和频率是指数的关系
其中,p是音高,f是频率
标准音la,即钢琴的A4键,定义为p=69。音高每上升一个半音,p加1
12
【研讨内容】——拓展题 题目3:连续时间信号的抽样
(1) 对带限信号(如Sa(t),Sa2(t)等),确定合适的抽样间隔T,分析x(t)的频谱X(j?)和抽样所得到离散信号x[k]的频谱X(ej?),并将两者进行比较。
(2) 将正弦信号x(t)?sin(2πf0t)按抽样频率fs=8kHz进行1 秒钟抽样,得离散正弦序列x[k]为
x[k]?x(t)t?kT?sin(2πsf0k) fs比较f0=2kHz, 2.2 kHz, 2.4 kHz, 2.6 kHz和 f0=7.2 kHz, 7.4 kHz, 7.6 kHz, 7.8 kHz 两组信号抽样所得离散序列的声音,解释所出现的现象。
(3) 对于许多具有带通特性的信号x(t),举例验证可否不需要满足fsam?2fm?
(1)
【题目分析】
抽样函数Sa(t)的频谱应该为非周期的矩形脉冲,但由于计算机处理时的信号均为离散信号,因此我们只关心其频谱在一个周期内的形状。
因此,一方面,我们决定定义出Sa(t)函数后,采用Matlab的函数fft()来计算频谱。
另一方面,通过信号与系统课程的学习,我们可以从理论上推导出Sa(t)函数的频谱并用计算机画图。
之后将两种方法得到的频谱进行比较,观察其中的差异。
最后,再增大Sa(t)函数时域的抽样间隔T,即减小抽样频率fs,观察时域与频域波形的变化。
【仿真程序】
%画出Sa函数时域波形及频谱的程序 fx=1;fs=10;N=150*fs;%fs 取样频率;N 点数 n=(0:N-1)-N/2;t=n/fs; y=sinc(fx*t/pi);%定义Sa函数 subplot(311);plot(t,y);grid on xlim([-5*pi/fx 5*pi/fx]); xlabel('t');ylabel('x(t)'); title('抽样信号Sa(t)')
XA=abs(fftshift(fft(y,N)))/fs;%计算幅度谱
13
subplot(312);plot(2*pi*n*fs/N,XA); xlabel('w');ylabel('X(jw)'); title('抽样信号Sa(t)的频谱') xlim([-2*fx 2*fx]);grid on
%----------------------------------------------------------- %理论分析得到的Sa函数的频谱 temp=(pi/fx).*ones(1,fx*20); wth=linspace(-fx,fx,length(temp)); subplot(313);plot(wth,temp);hold on; plot([-fx,-fx],[0,pi/fx]) plot([fx,fx],[0,pi/fx]) xlabel('w');ylabel('X(jw)');
title('抽样信号Sa(t)的频谱(理论)') xlim([-2*fx 2*fx]);grid on
%-----------------------------------------------------------
%增大抽样间隔T后,画出Sa函数时域波形及频谱的程序fx=1;fs=0.3;N=1500;%fs 取样频率;N 点数 n=(0:N-1)-N/2; t=n/fs;
y=sinc(fx*t/pi);%定义Sa函数 figure(2);subplot(211); plot(t,y);grid on xlim([-5*pi/fx 5*pi/fx]); xlabel('t');ylabel('x(t)');
title('增大抽样间隔T的抽样信号Sa(t)') XA=abs(fftshift(fft(y,N)))/fs;%计算幅度谱 subplot(212);plot(2*pi*n*fs/N,XA); xlabel('w');ylabel('X(jw)');
title('增大抽样间隔T的抽样信号Sa(t)的频谱') axis([-2*fx 2*fx 0 8]);grid on
14