转换文件夹中文件的Matlab程序没有迭代

转换文件夹中文件的Matlab程序没有迭代,matlab,Matlab,“save”中似乎存在一个问题,阻止该程序正确迭代每个文件并创建输出 目标是获取一个包含.wav文件的文件夹,并将它们全部转换为.dat或ascii.txt 有什么想法吗 dir_in = '/waves'; % set directory filelist = dir(fullfile(dir_in, '*.wav')); % get file list for i = 1 : length(filelist) % iterate over files in dir filename

“save”中似乎存在一个问题,阻止该程序正确迭代每个文件并创建输出

目标是获取一个包含.wav文件的文件夹,并将它们全部转换为.dat或ascii.txt

有什么想法吗

dir_in = '/waves'; % set directory

filelist = dir(fullfile(dir_in, '*.wav')); % get file list
for i = 1 : length(filelist) % iterate over files in dir
    filename = filelist(i).name;
    disp(['Processing ' num2str(i) '/' num2str(length(filelist)) ': ' filename])
    [data, fs] = audioread(fullfile(dir_in,filename)); % Do your stuff for every file
    save ['sampleOutput_' filename(1:end-4) '.txt'] data -ASCII % add filename to output filename, but without '.wav'
end

Matlab函数的命令形式(使用空格和无括号,即save filename.mat var1 var2)非常有限。如果您使用动态文件名,或使用变量作为文件名,则需要使用常规函数调用语法:save['sampleOutput.'u'filename1:end-4'.txt']、'data'、'-ASCII'。

首先,以上关于matlab函数命令形式限制的回答是正确的。在这种情况下,您可能应该避免它。其次,matlab中的save函数用于保存包含变量和结构的.mat文件。根据我的经验,保存包含数据的文本文件是没有用的。我可能会用以下内容替换该行:

writeMatrix扩展数据,strepFileName,'.wav','.txt'

如果希望以制表符分隔,默认情况下以逗号分隔,可以尝试:

WriteMatrix扩展数据,['sampleOutput_u'strepFileName',.wav',.txt','Delimiter','tab'

更新:
显然,您可以用这种方式使用保存功能!我不知道。谢谢

举个例子,如果我用这一行来保存'file%d.txt'数据-ASCII。。。它将按预期遍历目录中的文件,但只需不断使用动态文件名覆盖该文件。您不能使用空格分隔输入,请尝试保存['sampleOutput_u'文件名1:end-4'.txt'],'data','-ASCII'。David!非常感谢。作为答案提交,以便我能将其标记为正确答案?:太棒了!