matlab 音乐信号处理,基于matlab的音乐信号处理和分析.doc

基于matlab的音乐信号处理和分析

1音乐信号的音谱和频谱的观察

使用windows下的录音机录制一段音乐信号或者采用其他软件截取一段音乐信号(要求:时间不超过5s,文件格式为WAV)

使用wavread语句读取音乐信号获取抽样率;(注意:读取的信号是双声道信号,即为双列向量,需要分列处理);

输出音乐信号的波形和频谱,观察现象;

使用sound语句播放音乐信号,注意不同抽样率下的音调变化,解释现象

程序:

clear all;close all;clc

[y,fs,bit]=wavread('E:\music\11'); %读取音乐信号

size(y) %看音乐信号是双列还是单列

y1=y(:,1); %取单列

fs=fs %获取音乐信号的抽样率

N=length(y1); %音乐信号的长度

Fy1=fft(y1,N); %对信号做快速傅里叶变换

w=2/N*[0:N-1];

figure %画音乐信号的波形和频谱

subplot(2,1,1);plot(y1);

grid on

title('音乐信号的波形')

xlabel('time/s')

ylabel('Magnitude')

subplot(2,1,2);plot(w,abs(Fy1));

grid on

title('音乐信号的频谱')

xlabel('Frequency/pi')

ylabel('Magnitude')

sound(y1,fs) %以抽样率fs播放音乐信号

sound(y1,2*fs) %以抽样率2fs播放音乐信号

sound(y1,1/2*fs) %以抽样率1/2fs播放音乐信号

程序运行结果如下:

音乐信号的抽样率fs=44100

音乐信号的波形和频谱如下图:

抽样率较高时,听到的音乐音调较高,速度较快;抽样率较低时,听到的音乐音调低,速度慢。由此可知,音乐信号的音调和抽样率有关。

2音乐信号的抽取(减抽样)

观察音乐信号频率的上限,选择适当的抽取间隔对信号进行减抽样(给出两种抽取间隔,代表混叠与非混叠);

输出减抽样音乐信号的波形和频谱,观察现象,给出理论解释;

播放减抽样音乐信号,注意抽样率的改变,比较不同抽取间隔下的声音,解释现象。

音乐信号的频率上限为0.2pi,这里分别采用3和60作为非混叠与混叠的抽样间隔进行抽样,程序如下:

clear all;close all;clc

[y,fs,bit]=wavread('E:\music\22');%读取音乐信号

y1=y(:,1); %取单列

x1=y1(1:180000); %截取音乐信号

d=3;j=0;

for i=1:d:length(x1)

j=j+1;

x2(j)=x1(i);

end %对音乐信号以3为间隔做减抽样

N1=length(x1); %截断的音乐信号的长度

N2=length(x2); %以3为间隔减抽样后音乐信号的长度

Fx1=fft(x1,N1); %对截断信号做快速傅里叶变换

Fx2=fft(x2,N2); %对减抽样后的信号做快速傅里叶变换

w1=2/N1*[0:N1-1];

w2=2/N2*[0:N2-1];

figure %画出截断后的信号的波形和频谱

subplot(2,1,1);plot(x1);

grid on

title('截断后的波形')

xlabel('time/s')

ylabel('Magnitude')

subplot(2,1,2);plot(w1,abs(Fx1));

grid on

title('截断信号的频谱')

xlabel('Frequency/pi')

ylabel('Magnitude')

figure %画出以3为间隔减抽样后的信号的波形和频谱

subplot(2,1,1);plot(x2);

grid on

title('对截断信号以3为间隔减抽样后的波形')

xlabel('time/s')

ylabel('Magnitude')

subplot(2,1,2);plot(w2,abs(Fx2));

grid on

title('对截断信号以3为间

你可能感兴趣的:(matlab,音乐信号处理)