matlab的音乐信号的分析与处理设计的实验咋做?

作者&投稿:佐尹 (若有异议请与网页底部的电邮联系)
matlab对音乐波形分帧如何做循环~

用于测量模板开刻精度的检测标准|InTime推出RTL级静态时序分析工具|STN-LCD彩屏模块设计|四倍带宽存储器技术|在下一代通信系统中保持信号完整性|深亚微米时代的时序确认技术|基于积累型MOS变容管的射频压控振荡器设计(图)|Cadence联合业界共组研发联盟,跨越低功耗IC设计技术障碍|采用软硬件协同设计方法实现语音识别SoC|多模式WLAN芯片的设计考虑|
正文:
d. 输出波形文件和退出系统 这个功能由输出文件按钮来完成,是应用MATLAB的wavwrite函数将音频信号转换成.wav文件,文件中也包含了采样频率和数据宽度选项,增加此项的目的是为了能让更专业的音频处理软件对信号进行分析。通过执行应用程序和MATLAB的退出操作,使用“quit”命令退出系统。采用MATLAB的一点不足就是不能将所有的M文件转换成能脱离MATLAB而独立运行的应用程序。 声卡输出波形分析 下面采用界面缺省参数输出信号,即信号周期为29.5kHz,上升段时间为15ms,平稳段时间为70ms,下降段时间为15ms,周期为1s,也可以推算出每周期有900ms是没有信号输出。对信号的采样波形如图2所示,经过仪器分析,时间误差可达到小于0.1ms。 对周期信号的傅立叶频谱分析如图3所示,信号的能量主要集中在29.5kHz的窄带范围内,是符合设计要求的。 信号的信噪比分析:通过对输出0伏值段分析即可判断信号信噪比和噪音信号类型,从而找出消除噪音的方法。对噪音波形进行局部放大,可看出此噪音为频率大于1M的锯齿波,波形如图4所示。 声卡输出噪音分析 Waveterminal 192L声卡的输出信号峰峰值为6V,而噪音信号的峰峰值为40mV,因而信噪比为20log(6000/40)=43.5dB,当数据宽度为8位时,D/A精度为1位;数据宽度为16位时,D/A精度为9位;数据宽度为24位时,D/A精度为17位。而Waveterminal 192L声卡的信噪比为104位,因此,噪音信号主要为电脑本身、电脑辐射和环境噪音。电脑本身的噪音主要来自于主机电源,声卡的电源信号取自计算机主板,因此主机电源的噪音会引入声卡。另外,接收T型波的设备,如被检验设备和示波器等,往往就放在主机旁边,主机的高频辐射会通过机箱缝隙而形成噪音。环境噪音是最容易被忽视的一个部分,因为这是一个频率仅有50赫兹的噪音分量,对于低频输出信号会有很大的影响。 0day 回答采纳率:22.9% 2010-05-23 22:50

第一个,数字滤波器很简单

一、基本要求

    1 学会MATLAB的使用,掌握MATLAB的基本编程语句。

     2 掌握在Windows环境下音乐信号采集的方法。

     3 掌握数字信号处理的基本概念、基本理论和基本方法。

     4 掌握MATLAB设计FIR和IIR数字滤波器的方法。

5 掌握使用MATLAB处理数字信号、进行频谱分析、涉及数字滤波器的编程方法。

二、内容

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

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

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

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

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

 程序如下:

[Y,FS,NBITS]=WAVREAD('怒放的生命 - 汪峰5s'); %读取音乐信号

plot(Y);                                 %显示音乐信号的波形和频谱

sound(Y,FS);                             %听音乐(按照原来的抽样率)

Y1=Y(:,1);                               %由双声道信号变为单声道信号

size(Y1) 

figure

subplot(2,1,1);

plot(Y);                                 %显示原信号波形 

N=length(Y1);

f1=fft(Y1);                              %傅立叶变换

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

subplot(2,1,2);

plot(w,abs(f1(1:N/2)));                    %显示波形

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

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

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

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

程序如下

[Y,FS,NBITS]=WAVREAD('怒放的生命 - 汪峰5s');

Y1=Y(:,1);

D=   ;j=0;                        %减抽样,D表示抽样间隔(10倍和100倍)

for i=1:D:length(Y1)               % I表示开始减抽样的起始点

    j=j+1;

    Y2(j)=Y1(i);                   %Y2减抽样后的信号

end

N=length(Y1);

N1=length(Y2);

F1=fft(Y1);

F2=fft(Y2);

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

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

figure

subplot(4,1,1);plot(Y1);          %显示原单声道信号波形和频谱

subplot(4,1,2);plot(Y2);          %图显示抽样信号波形和频谱

subplot(4,1,3);plot(w1,abs(F1));  %显示原单声道信号fft变换后的波形和频谱

subplot(4,1,4);plot(w2,abs(F2));  %显示抽样信号快速fft变换后的波形和频谱

sound(Y2,FS)                      %声音低沉,而且不是很清晰。有一些声音信号丢失,%抽样率越高,声音越听不清晰,

实验3   音乐信号的AM调制

① 观察音乐信号的频率上限,选择适当调制频率对信号进行调制(给出高、低两种调制频率);

② 输出调制信号的波形和频谱,观察现象,给出理论解释;

播放调制音乐信号,注意不同调制频率下的声音,解释现象。

程序如下:

[Y,FS,NBITS]=WAVREAD('怒放的生命 - 汪峰5s');

Y1=Y(:,1);

N=length(Y1);

F1=fft(Y1);                                 %傅立叶变换

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

figure

subplot(2,2,1);

plot(w1,abs(F1(1:N/2)));

N1=0:N-1;

Y2=cos(N1*pi/8);                            %设置高频调制信号

N2=length(Y2)

F2=fft(Y2);

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

subplot(2,2,2);plot(w2,abs(F2(1:N2/2)));

subplot(2,2,3);stem((0:64),Y2(1:65)); 

F=Y1.*Y2';                                %利用高频调制信号调制单列音乐信号

N3=length(F);                             

F3=fft(F);                                %傅立叶变换

w3=2/N3*[0:N3-1];

subplot(2,2,4);plot(w3,abs(F3));

sound(F,FS)                        %  未混叠时,声音尖锐,不清晰,刺耳

                                    %   混叠时,声音轻,只有淡淡的音调,基本没有起伏,不清晰。

实验4 AM调制音乐信号同步解调

① 设计巴特沃斯IIR滤波器完成同步解调;观察滤波器频率响应曲线

② 用窗函数法设计FIR滤波器完成同步解调,观察滤波器频率响应曲线;(分别使用矩形窗和布莱克曼窗,进行比较);

③ 输出解调信号的波形和频谱图,观察现象,给出理论解释;

播放解调音乐信号,比较不同滤波器下的声音,解释现象。

巴特沃斯IIR 滤波器

  程序如下

clear all;close all;clc

[Y,FS,NBITS]=WAVREAD('怒放的生命 - 汪峰5s');

Y1=Y(:,1);

N=length(Y1);

N1=0:N-1;

Y2=cos(N1*pi/8);   

F=Y1.*Y2';

F2=F.*Y2';                     %音乐信号调制

 

wp=0.18;ws=0.25;rp=1;rs=50;     %设计巴特沃斯IIR 滤波器

[N4,Wc]=buttord(wp,ws,rp,rs);

[B,A]=butter(N4,Wc);

[Hd,w]=freqz(B,A);

figure

subplot(2,1,1);plot(w/pi,abs(Hd));

 

F3=filter(B,A,F2);             %解调音乐信号

N4=length(F3);

F4=fft(F3);

w4=2/N4*[0:N4/2-1];

subplot(2,1,2);plot(w4,abs(F4(1:N4/2)));

sound(F3,FS)                       %声音清晰,基本和原来的音乐差不多,但是音乐开始有一点点杂音。


矩形窗和布莱克曼窗

function hd=ideal(N,wc)

for n=0:N-1

    if n==(N-1)/2

        hd(n+1)=wc/pi;

    else hd(n+1)=sin(wc*(n-(N-1)/2))/(pi*(n-(N-1)/2));

    end

end

(将上述程序保存为ideal.m,但是不能运行。然后在打开新窗口编写下列主程序)

 

clear all;close all;clc

[Y,FS,NBITS]=WAVREAD('怒放的生命 - 汪峰5s');

Y1=Y(:,1);

N=length(Y1);

N1=0:N-1;

Y2=cos(N1*pi/8);   

F=Y1.*Y2';

F2=F.*Y2';                     %调制音乐信号

 

N=89;wc=pi/0.22;                 % 矩形和布莱克曼窗  

hd=ideal(N,wc);

w1=boxcar(N);

w2=blackman(N);

h1=hd.*w1';

h2=hd.*w2';

N1=length(h1);

N2=length(h2);

fh1=fft(h1);

fh2=fft(h2);

ww1=2/N1*(0:(N1-1)/2);

ww2=2/N2*(0:(N2-1)/2);

figure

subplot(2,1,1);plot(ww1,abs(fh1(1:(N1-1)/2+1)));

subplot(2,1,2);plot(ww2,abs(fh2(1:(N1-1)/2+1)));

 

F3=conv(F2,h1);           

F4=conv(F2,h2);

M1=length(F3);

M2=length(F4);

fy1=fft(F3);

fy2=fft(F4);

w3=2/M1*[0:M1/2-1];

w4=2/M2*[0:M2/2-1];

figure

subplot(2,1,1);plot(w3,abs(fy1(1:M1/2)));

subplot(2,1,2);plot(w4,abs(fy2(1:M2/2)));

 

sound(F3,FS)             %音乐信号清晰,有杂音,低沉.

5、音乐信号的滤波去噪

① 给出原始音乐信号叠加幅度为0.05,频率为3kHz,5kHz、8kHz的三余弦混合噪声,观察噪声频谱以及加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响;

② 给原始音乐信号叠加幅度为0.5的随机白噪声(可用rand语句产生),观察噪声频谱以及加噪后音乐信号的音谱和频谱,并播放音乐,感受噪声对音乐信号的影响;

根据步骤①、②观察到的频谱,选择合适指标设计滤波器进行滤波去噪,观察去噪后信号音谱和频谱,并播放音乐,解释现象。

程序如下:

三余弦混合噪声:

[x,fs,nbits]=wavread('怒放的生命 - 汪峰5s');

x1=x(:,1);               %获取单列音乐信号并对其做FFT变换

N1=length(x1);

fx1=fft(x1);

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

 

n=0:N1-1;y=0.05*(cos(2*pi*n*3000/fs)+cos(2*pi*n*5000/fs)+cos(2*pi*n*8000/fs));

                         %设计三余弦混合噪声信号

N2=length(y);            %对三余弦混合噪声信号做FFT变换

fy=fft(y);

w2=2/N2*(0:N2/2-1)*fs/2;

 

hdx=x1+y';               %产生加噪后的音乐信号并对其做FFT变换

M=length(hdx);            

fhdx=fft(hdx);

w3=2/M*(0:M/2-1);

 

figure           %画出单列信号音乐信号的频谱图、三余弦混合噪声信号的离散信号图

                  %及其频谱图和加噪后音乐信号的频谱图

subplot(2,2,1);plot(w1,abs(fx1(1:N1/2)));

subplot(2,2,2);stem((0:127),y(1:128));

subplot(2,2,3);plot(w2,abs(fy(1:N2/2)));

subplot(2,2,4);plot(w3,abs(fhdx(1:M/2)));

sound(hdx,fs);         %  音乐信号有电流声,而且噪声比较明显。

 

wp=0.1;ws=0.15;rp=1;rs=50;  %设计巴特沃斯滤波器

[N4,Wc]=buttord(wp,ws,rp,rs);

[B,A]=butter(N4,Wc);

[Hd,w]=freqz(B,A);

 

lohdx=filter(B,A,hdx);     %利用巴特沃斯滤波器对加噪后音乐信号进行滤波并对其做%FFT变换

M1=length(lohdx);

flohdx=fft(lohdx);

w4=2/M1*(0:M1/2-1);

 

figure               %画出加噪后音乐信号的音频图、巴特沃斯滤波器的频率响应曲线

                      %和滤波后音乐信号的频谱图

subplot(3,1,1);plot(hdx);

subplot(3,1,2);plot(w/pi,abs(Hd));

subplot(3,1,3);plot(w4,abs(flohdx(1:M1/2)));

sound(lohdx,fs);           %滤波后音乐信号比较低沉,较清晰。

 

白噪声:

[x,fs,nbits]=wavread('怒放的生命 - 汪峰5s');

x1=x(:,1);               %获取单列音乐信号并对其做FFT变换

N1=length(x1);

fx1=fft(x1);

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

ry=rand(size(x1))-0.5;            %产生随机白噪声信号并对其做FFT变换

N=length(ry);

fry=fft(ry);

w=2/N*(0:N-1);

 

xry=x1+ry;                       %产生加噪后的音乐信号并对其做FFT变换 

NN=length(xry)

fxry=fft(xry);

ww=2/NN*(0:NN/2-1);

figure                   %画出单列信号音乐信号的频谱图、随机白噪声信号的音频图

                          %及其频谱图和加噪后音乐信号的频谱图

subplot(2,2,1);plot(w1,abs(fx1(1:N1/2)));

subplot(2,2,2);plot(ry);

subplot(2,2,3);plot(w,abs(fry));

subplot(2,2,4);plot(ww,abs(fxry(1:NN/2)));

sound(xry,fs);             %声音信号有沙沙声。

 

wp=0.1;ws=0.15;rp=1;rs=50;      %设计巴特沃斯滤波器

[N4,Wc]=buttord(wp,ws,rp,rs);

[B,A]=butter(N4,Wc);

[Hd,w]=freqz(B,A);

 

loxry=filter(B,A,xry);          %利用巴特沃斯滤波器对加噪后音乐信号进行滤波并对%其做FFT变换 

NN1=length(loxry);

floxry=fft(loxry);

ww1=2/NN1*(0:NN1/2-1);

figure              %画出加噪后音乐信号的音频图、巴特沃斯滤波器的频率响应曲线

                         %和滤波后音乐信号的频谱图

subplot(3,1,1);plot(xry)

subplot(3,1,2);plot(w/pi,abs(Hd));

subplot(3,1,3);plot(ww1,abs(floxry(1:NN1/2)));

%sound(loxry,fs);            %音乐信号低沉,但是沙沙声还是没有滤除。但是较为减轻

6、音乐信号的幅频滤波及相频分析

① 设计低通滤波器(可自行选取不同的截止频率),滤除原始音乐信号的高频信息,观察滤波前后的幅度频谱,并比较滤波前后的音乐效果,感受高频信息对音乐信号的影响;

② 设计高通滤波器(可自行选取不同的截止频率),滤除原始音乐信号的低频信息,观察滤波前后的幅度频谱,并比较滤波前后的音乐效果,感受低频信息对音乐信号的影响;

③ 选取两段不同的音乐信号,分别将其幅度谱与相位谱交叉组合构成新的音乐信号,播放比较组合后的音乐与原始音乐,感受相频信息对音乐信号的影响。

 

程序如下;

滤除高频信息的程序:

 clearall;close all;clc

[x,fs,nbits]=wavread('怒放的生命 - 汪峰5s');

x1=x(:,1);            %获取单列音乐信号并对其做FFT变换

N=length(x1);

fx1=fft(x1);

w1=2/N*(0:N/2-1);

 

wp=0.01;ws=0.06;rp=1;rs=50;  %设计巴特沃斯滤波器

[N4,Wc]=buttord(wp,ws,rp,rs);

[B,A]=butter(N4,Wc);

[Hd,w]=freqz(B,A);

 

lox1=filter(B,A,x1);         %使用巴特沃斯滤波器滤除音乐信号的高频部分并对所得

%音乐信号做FFT变换

N1=length(lox1);

flox1=fft(lox1);

w2=2/N1*(0:N1/2-1);

figure           %画出单列音乐信号的频谱图、巴特沃斯滤波器的频率响应曲线和滤除

 %高频后的音乐信号的频谱图

subplot(3,1,1);plot(w1,abs(fx1(1:N/2)));

subplot(3,1,2);plot(w/pi,abs(Hd));

subplot(3,1,3);plot(w2,abs(flox1(1:N1/2)));

sound(x1,fs);   %播放单列音乐信号和滤除高频后的音乐信号

sound(lox1,fs);%声音清晰

滤除低频信息的程序:

clear all;close all;clc

[x,fs,nbits]=wavread('怒放的生命 - 汪峰5s');

x1=x(:,1);            %获取单列音乐信号并对其做FFT变换

N=length(x1);

fx1=fft(x1);

w1=2/N*(0:N/2-1);

 

wp=0.2;ws=0.05;rp=1;rs=50;  %设计巴特沃斯高通滤波器

[N4,Wc]=buttord(wp,ws,rp,rs);

[B,A]=butter(N4,Wc,'high');

[Hd,w]=freqz(B,A);

 

lox1=filter(B,A,x1);         %使用巴特沃斯滤波器滤除音乐信号的低频部分并对所得音乐信号做FFT变换

N1=length(lox1);

flox1=fft(lox1);

w2=2/N1*(0:N1/2-1);

figure                    %画出单列音乐信号的频谱图、巴特沃斯滤波器的频率响应曲

%线和滤除低频后的音乐信号的频谱图

subplot(3,1,1);plot(w1,abs(fx1(1:N/2)));

subplot(3,1,2);plot(w/pi,abs(Hd));

subplot(3,1,3);plot(w2,abs(flox1(1:N1/2)));

sound(lox1,fs);                      %声音低,不清晰。

交叉组合音乐

clear all;close all;clc

clear all;close all;clc

[x,fs,nbits]=wavread('钢琴曲 - 雨的印记5s');

[y,fs,nbits]=wavread('怒放的生命 - 汪峰5s');

x1=x(:,1); 

y1=y(:,1);

x2=x1(1:200000)                   %取音乐长度

Nx2=length(x2);

y2=y1(1:200000);

Ny2=length(y2);

x3=fft(x2);

y3=fft(y2);

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

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

 

 

Fx1=abs(x3);                         %选取第一个音乐信号的幅度和第二个音乐信号%的相位

Ay1=angle(y3);

 

F4=Fx1.*exp(j*Ay1);                     

X4=ifft(F4);

NF4=length(F4);

F5=fft(F4);

w3=2/NF4*[0:NF4-1];

 

sound(real(X4),fs);

                       figure

subplot(3,1,1);plot(w1,abs(x3));         

subplot(3,1,2);plot(w2,abs(y3));         

subplot(3,1,3);plot(w3,abs(F5));



语音信号的采集和频谱分析:
[y,fs,bits]=wavread('voice'); %读取音频信息(双声道,16位,频率44100Hz)
sound(y,fs,bits); %回放该音频
Y=fft(y,4096); %进行傅立叶变换
subplot(211);
plot(y);
title('声音信号的波形');
subplot(212)
plot(abs(Y));
title('声音信号的频谱');


自我介绍英语演讲稿
自我介绍英语演讲稿1 GoodMorning \/ Afternoon, My dear teachers My nameis Wu Yixuan. I am 11 years old, and I am a fifth grade student.I have many hobbies. I like drawing and I can drawvery well, which get a lot of praise from my teachers and friends. I likesports, ...

郏县19194729985: MATLAB分析声音信号 -
常巩莱美: 这个要用到联合时频分析,STFT也行,WVD也行.噪声的话,要看你是什么样的类型噪声,建议先用FFT分析,大概确定一下频率.不知道你是要用软件滤波还是用硬件滤波.声音信号的频率都在低频段,处理起来比较容易.建议使用希尔伯特变换就可以,这是最简单的时频分析方法,也是最成熟的,在MATLAB里面使用非常的简单.

郏县19194729985: 在matlab中怎样实现对声音的导入,分析与处理??? -
常巩莱美: 1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址).2)使用如下程序,做波形显示以及fft变换.[y,Fs,bits]=wavread('cricket.wav');%读出信号,采样率和采样位数.y=y(:,1);%我这...

郏县19194729985: 如何用matlab对一个音频信号进行频域分析 -
常巩莱美: wavread只能读取Pulse-code Modulation (PCM) data format only 先将该wav从CCITT A Law 格式转换成PCM格式 用windows自带的录音机就可以转

郏县19194729985: 有关matlab处理音频信号的问题 -
常巩莱美: 在MATLAB里面应该没有抽样录入,如果想抽象录入的话,你只能去涉及底层编程.其实在MATLAB里面输入一首歌曲音频信号所花时间不超过三秒,若为了试验,这样的确是可以的. 我也正在做音频处理方面的论文,欢迎致信交流. 我的邮箱wangtongpeng@126.com

郏县19194729985: MATLAB中进行FFT谱分析,如何将频谱图的横坐标转换成频率?对一段音频信号进行FFT谱分析,长度为500点.横坐标为1 - 500.现在想将其直接转换为频率... -
常巩莱美:[答案] [x,fs,bite]=wavread('C:\WINDOWS\Media\Windows XP 启动.wav',[1000 1499]); z=x(:,1); y=fft(z); Y=fftshift(X); sound(x,fs,bite); subplot(2,1,1);plot(abs(Y)); 将零频分量移至频谱中心的函数 格式:Y=fftshift(X) 功能:用来重新排列X=fft(x)的输出,把X 的左...

郏县19194729985: 请教如何利用MATLAB软件来实现音频信号的采样与重构呀,程序尽量详细点,本人在MATLAB方面是菜鸟 -
常巩莱美: 1、把音频信号保存为.wav格式\ 2、用wavread读取 3、再处理或者用record

郏县19194729985: Matlab分析音频的频域并且实现随着音乐播放频域的动态变化 -
常巩莱美: 可以计算每个频率段的平均值,然后用柱形图显示. 想要动态显示的话,我应该会用到 pause(时间) clf ;清除原有图像 可以help一下~

郏县19194729985: 如何在MATLAB中进行音频的频谱分析? -
常巩莱美: y= 2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180); 这行就是表达式,Y=2+3cos(100πt-....), 那个错误提示就是你用的表达式不合法,需要重新换掉.系统已有这样一个表达.具体的去网站去搜搜,学会找到这个正确答案的方法

郏县19194729985: 怎么用MATLAB里的GUIDE实现声音信号的采集和处理 -
常巩莱美: 1.采集很简单:t=5; %录音时间 fs=44100;%设定采样频率 nbits=16;%比特 y1=wavrecord(t*fs,fs,1); %(t*fs)为采样点数,1表示单通道 即可用mic录音;然后还可利用wavwrite(y1,fs,nbits,[name])保存;2.处理的话,较麻烦.由于语音信号受高斯白噪声干扰后,整个频谱重叠在一起,肯定不能用经典滤波器.而要用专门的语音增强算法,这个你可以去看看书.

郏县19194729985: matlab声音信号怎么导入,分析与处理? -
常巩莱美: 在菜单file里选择import

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网