繁体   English   中英

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

[英]Matlab program to convert files in folder isn't iterating

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

目标是获取一个充满 .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_' filename(1:end-4) '.txt'],'data','-ASCII')

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

writematrix(数据,strrep(文件名,'.wav','.txt'));

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

writematrix(data, ['sampleOutput_' strrep(filename, '.wav', '.txt')],'Delimiter','tab');

更新:显然你可以以这种方式使用“保存”function。 我不知道。 谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM