matlab怎么把音频变成信号_matlab实现声音信号的频谱分析

首先,我需要理清一下自己的思路

1.转化格式为wav——下载软件

2.将声音信号放到matlab里面,那些特征如何显示分析?——

2.FFT变换是什么?——看其他人代码

3.能量分布情况又是什么?——看其他人代码

知识盲点

老实讲,这一个要实现,代码很简单,但是因为理论知识跟不上,导致我分析起来有些吃力。

阐述一下问题:

1.y是指采集数据,指的是发出的振幅值,可是为什么是在-1~1呢?(图形上就是这样显示的)

2.如何看一段音频的数据位数和数据格式?

3.双声道变成单声道,是将y作为一组向量数组,‘y(:,1)’和‘y(:,2)’分别取第一个声道和第二个声道,但是怎么确定哪个是左声道呢?

4.利用plot画图,当我画plot(t,y)的时候,会因为内存不足而停止,可是为什么呢?(t一样的,只是y是双声道的而已。)t=(0:ylength-1)/fs是什么意思?

那么这种方式画图和plot(y)有什么区别吗?

一、输入原始信号的时域图和频域图

clear;

clc;

[y,fs]=audioread('E:\son\dudu.wav'); #将声音放于matlab中

info=audioinfo('E:\son\dudu.wav') #得到声音的格式、位数、频率等

%sound(y,fs);

T=1/fs; #采样时间

t=(0:length(y)-1)*T;#时间

f=(0:length(y)-1)*fs/length(y);

figure(1);

yz=y(:,1);#左声道

subplot(2,1,1);

plot(t,yz);#输入信号时域曲线

title('原始信号时域');

xlabel('时间');

ylabel('振幅');

subplot(2,1,2);

n=length(yz);#进行变换的点数

y1=fft(yz,n); #对n点进行傅里叶变换到频域

F=fs/length(yz); #谱分辨率,频谱间隔

subplot(212)

plot(f,abs(y1));#左声道频谱图

title('原始信号频谱');

xlabel('F(Hz)');

ylabel('H(jw)');

grid on

1.jpg

声音的相关数据.PNG

二、能量分布图

figure(2)

subplot(211);

Pyy=y1(1:1100+1);#按照处理向量的方式得到所需声音信号的范围

f=(1:1100+1);

plot(f, 20*log10(abs(Pyy))) %能量频谱图

xlabel('Frequency (Hz)')

ylabel('Power (dB)')

subplot(212)

bar(f,abs(Pyy)) %能量坐标图

能量.jpg


版权声明:本文为weixin_26824207原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。