0

3つのフォルダーを持つディレクトリがあります。これら 3 つのフォルダーの各フォルダーには、別の数のフォルダーがあります。そして、これらのフォルダーの各フォルダーには、これらの各ファイルでコードを実行したいファイルのリストがあります。たとえば、次のようになります。 MainFolder には SubFolder1、SubFolder2 があります。SubFolder1 には、SubSubFolder1、SubSubFolder2、SubSubFolder3 があります。SubFolder2 には SubSubFolder1、SubSubFolder2 があります。各 SunSubFolders には多数のファイルがあります。MainFolder パスを指定し、各サブフォルダーとサブサブフォルダーを通過し、このサブサブフォルダー内のファイルに対して操作を行い、このサブサブフォルダーの名前でワークスペースを保存するスクリプトが必要です。したがって、上記の例では、SubSubFolder1 内のファイルに対していくつかの作業を行った後、結果のワークスペースが SubSubFolder1.mat という名前の場所に保存されます。

これは私にとってかなり緊急であるため、誰かが私を助けてくれるかどうか尋ねています. 親切なご支援とご配慮に感謝いたします。

アップデート:

私はそれを行いましたが、別の問題が発生し、SubSubFolders 内のファイルにアクセスして操作を実行しようとすると、「ファイル '[00000000].pgm' を開けませんでした。そのようなファイルまたはディレクトリがありません」と表示されます。この問題を解決するには?

これは私のコードです:

D = rdir('Hussein/*/*');           %// List of all sub-directories
for k = 1:length(D)
    currpath = D(k).name;                 %// Name of current directory
    [pathstr, name, ext] = fileparts(currpath);
    %// Operate on all .txt files in currpath
    l = dir(fullfile(currpath, '*.pgm')); %// Listing of all relevant files
    filenames={l.name}';

    nfiles=length(filenames)
    %images=zeros(240, 320, 1000);
    idx=1;

    strtidx=1;
    endidx=nfiles;
    step=1;

    waitbar(0);
    for i=strtidx:step:endidx
        fn=fullfile('', filenames{i});
        tmp=padarray(ut_pgmread(fn), 1, 'post');
        %figure(1); imagesc(tmp); colormap(jet(4096)); colorbar;

        images(:, :, idx)=tmp; idx=idx+1;

        waitbar(i/nfiles);
    end

    close(findall(0,'Tag','TMWWaitbar'));
    name='/Volumes/Untitled/work/'+name;
    save (name, '-v7.3');

    %for m = 1:length(F)
     %   currfile = F(m).name;             %// Name of current file

        %// Do something with currfile...
    %end

    %// Write output (if any) in currpath...
end;
4

1 に答える 1

3

の再帰バージョンを探しているようです。そのため、MATLAB File Exchange の強化されたツールが目的に役立つdirかもしれません。Enhanced を使用すると、コードは次のようになります。rdirrdir

%// List all sub-directories under MainFolder recursively
D = rdir('MainFolder\**\*.');             %// List of all sub-directories
for k = 1:length(D)
    currpath = D(k).name;                 %// Name of current directory

    %// Operate on all .txt files in currpath
    F = dir(fullfile(currpath, '*.txt')); %// Listing of all relevant files
    for m = 1:length(F)
        currfile = F(m).name;             %// Name of current file

        %// Do something with currfile...
    end

    %// Write output (if any) in currpath...
end;
于 2013-04-09T14:41:09.887 に答える