Matlab:对多个文件起作用
Posted
技术标签:
【中文标题】Matlab:对多个文件起作用【英文标题】:Matlab: function on multiple files 【发布时间】:2018-12-17 14:45:15 【问题描述】:我想读取文件夹中包含的所有 wav 文件,每个文件我执行一个功能。 此函数的结果是一个数字。我想将几个结果保存在一个文件 txt 中。
这是我的代码:
dirMask = 'folder\*.wav';
wavRoot = fileparts(dirMask);
Files=dir(dirMask);
x = [];
for k=1:length(Files)
FileNames = fullfile(wavRoot, Files(k).name)
nomi=FileNames;
[s,fs] = audioread(FileNames);
a = function(s, fs);
x=a;
end
fid = fopen('file.txt','wt');
fprintf(fid,'%f\n',x);
fclose(fid);
此代码不起作用。我该怎么做?
【问题讨论】:
代码“不起作用”,因为... 不保存所有结果,只保存最后四个 您所做的只是在每个循环中更改x
的值,然后在最后写入最终值。我很惊讶它写的是最后 4 个而不是最后一个 1。您需要 1. 使用 x(end+1) = a
更新每个循环 x
(有更好的方法可以做到这一点,但无论如何)。您可能需要更改使用 fprintf
的方式。 2. 在循环前使用fopen
,完全跳过使用x
,在循环内使用fprintf(fid,'%f\n',a)
。旁注:我假设您实际上并没有使用 function
作为函数名?这是语法错误。
【参考方案1】:
我重新安排了一些事情。我对最初的意图并不完全肯定,但我认为这就是你想要实现的目标:
dirMask = 'folder\*.wav';
Files = dir(dirMask);
fid = fopen('file.txt','wt');
for k=1:length(Files)
FileName = [ Files(k).folder '\' Files(k).name ]
[s,fs] = audioread(FileName);
% functions named function is a bad idea as it is keyword protected
x = myFunction(s,fs);
fprintf(fid,'%f\n',x);
end
fclose(fid);
【讨论】:
以上是关于Matlab:对多个文件起作用的主要内容,如果未能解决你的问题,请参考以下文章