1

我在 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

非常感谢您的帮助和时间!

4

0 回答 0