1

私はMATLABで働いています。ディレクトリ内のすべてのファイルをループして実行し、それらのデータセット出力を単一のデータセットに連結する機能があります。

関数を変更して、個々のデータセットと統合されたデータセットをすべて出力する方法はありますか?

以下の「FileInfo」という名前の配列には 3 つの列があります。最初の列はファイル名で、2 番目と 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