我正在研究一个小型神经网络项目,我对 Matlab 很陌生。
我有大约 400 个短 wav 文件,必须读取它们,然后组合成一个矩阵数据集。我找不到任何有关如何将所有 wav 文件加载到 Matlab 中的信息,以便它以不同的名称存储每个文件。
我的问题是:
- 是否可以在 Matlab 中批量处理 wav 文件以将每个向量存储为单独的数据?
- 考虑到它们具有不同的维度(长度),用处理后的 wav 文件向量填充矩阵的过程是什么?
我正在研究一个小型神经网络项目,我对 Matlab 很陌生。
我有大约 400 个短 wav 文件,必须读取它们,然后组合成一个矩阵数据集。我找不到任何有关如何将所有 wav 文件加载到 Matlab 中的信息,以便它以不同的名称存储每个文件。
我的问题是:
该解决方案利用了{...}
可以处理不同维度、大小甚至类型的数据的元胞数组。在这里,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