在嵌入式底层中,需要用到WAV文件转换为数组。

 

网上搜了一下相关工具,都不是我想要的,后面找到了matlab,

首先找到一段WAV文件。

WAV文件转C数组,matlab应用_matlab

使用audition查看波形

WAV文件转C数组,matlab应用_matlab_02

在matlab里面读取这个文件

WAV文件转C数组,matlab应用_matlab_03

具体指令是

WAV文件转C数组,matlab应用_matlab_04

为了方便计算,需要转换为16进制的数据

WAV文件转C数组,matlab应用_matlab_05

使用plot查看一下

WAV文件转C数组,matlab应用_matlab_06

可以看出波形没问题

简单对比一下数据内容

WAV文件转C数组,matlab应用_matlab_07

24位音频数据,可以看出数据是一致的

 

 [y,Fs,nbits] = wavread('5150.wav','native')

%%
yy = zeros(1,1024)

for i = 1:length(y)
    yy(i) = y(i);
end

plot(yy)

%% 以下为打印脚本
str = sprintf('float R[%d] = { ',length(yy));
disp(str);
for i = 1:length(yy)/8
    str = sprintf('%f,', ...
        yy(1,(i-1)*8+1:i*8));
    if i == length(yy)/8
        str = [str(1:end-1),'};'];
    end
    disp(str);
end

上面是数据转数组打印的全部代码