私は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
あなたの助けと時間をどうもありがとうございました!