我在MATLAB工作。 我有一个函数循环遍历目录中的所有文件,运行它们并将它们的数据集输出连接成一个数据集。
有没有办法可以改变我的功能,以便输出所有单独的数据集以及统一数据集?
下面,名为“FileInfo”的数组有3列。第一个是文件名,第二个和第三个列是输入
function [AllFunOutputs] = RunAllFuns(FileInfo)
fileDir = dir('C:\MATLAB\Funs'); % get all file names in directory 'Funs'
files = {fileDir.name};
funNames = strrep(files, '.m', ''); % strip the '.m' suffix from all files
funNames(:,1:2) = [];
funNames = transpose(funNames);
k = 1; % below, match the function name with its argument
for i=1:length(FileInfo)
if strcmp(FileInfo(i,1),funNames(k,1))
funNames(k,3) = FileInfo(i,2);
k = k+1;
end
end
% create function handles
fh_array = cellfun(@str2func,{funNames{:,1}},'UniformOutput', false);
X = []; % below, concatenate all output datasets into a single dataset
for i=1:size((funNames),1)
X=[fh_array{i}(funNames(i,2),(funNames(i,3)))];
X = X+1;
end
所以.....为什么这不能给我所有函数的输出数据集?
nFcns = numel(fh_array); % number of functions to evaluate
for i=1:size(nFcns)
[allresults] = feval(@(i)funNames(i,2),funNames(i,3));
end
非常感谢你的帮助和时间!