3

我正在研究一个小型神经网络项目,我对 Matlab 很陌生。

我有大约 400 个短 wav 文件,必须读取它们,然后组合成一个矩阵数据集。我找不到任何有关如何将所有 wav 文件加载到 Matlab 中的信息,以便它以不同的名称存储每个文件。

我的问题是:

  • 是否可以在 Matlab 中批量处理 wav 文件以将每个向量存储为单独的数据?
  • 考虑到它们具有不同的维度(长度),用处理后的 wav 文件向量填充矩阵的过程是什么?
4

1 回答 1

3

该解决方案利用了{...}可以处理不同维度、大小甚至类型的数据的元胞数组。在这里,Y将所有音频文件的.wav采样数据和FS采样率存储在一个目录中。

% create some data (write waves)
load handel.mat;                  %predifined sound in matlab stored in .mat
audiowrite('handel1.wav',y,Fs);   %write the first wave file
audiowrite('handel2.wav',y,Fs);   %write the second
clear y Fs                        %clear the data


% reading section
filedir = dir('*.wav');           %list the current folder content for .wav file
Y = cell(1,length(filedir));      %pre-allocate Y in memory (edit from @ Werner)
FS = Y;                           %pre-allocate FS in memory (edit from @ Werner)
for ii = 1:length(filedir)        %loop through the file names

    %read the .wav file and store them in cell arrays
    [Y{ii,1}, FS{ii,1}] = audioread(filedir(ii).name);  

end

您可以通过以下方式访问数据

for ind_wav = 1:length(Y)
    wav_data = Y{ind_wav,1};
end
于 2013-09-12T20:12:35.377 回答