私は MATLAB コーディングの初心者なので、else-ware からコードを取得して自分のニーズに適用しました。これまで、1 つのフォルダーからすべてのファイルを列ベクトルに取得することができましたが、親ディレクトリ内のすべてのフォルダーからすべてのファイルをこの単一の列ベクトルに取得したいと考えています。ここに私のコードがあります:
...
folder = ('parent_directory_path_name\01');
files = eval(['dir(''' folder '\*wind*.na'')']); % take files with wind in name
N = length(files);
%%
for n=1:N
filename = files(n).name;
eval(['fid = fopen(''' folder '/' filename ''');'])
data=textscan(fid, '%s','delimiter','\n');
lines=data{1};
lines=lines(56:end);
for i=1:size(lines,1)
[s(i).time s(i).east s(i).north] = strread(lines{i},'%f %f %f %*f %*f %*f %*f %*f');
end
time = [s.time]';
east (:,n) = [s.east]';
north(:,n) = [s.north]';
fclose(fid);
end
%%
ea = east (:); % put matrix columns into 1 column
no = north (:);
...
フォルダー指定の周りに置くことができる単純なループがあるに違いないと確信していますが、それを解決することはできません。私も見ました: MATLABの特定のディレクトリの下にあるすべてのファイルを取得する方法は? 、しかし、方法が非常に異なるため、これを使用しているコードに適用する方法がわかりません。
どんなヒントでも大歓迎です。
ありがとう、ルーク
編集
Re:Shai (コメント セクションが十分に大きくない)
さて、試してみましたが、ファイルを開く方法がわかりません。これが私が試したことです:
sub_f = dir( fullfile( 'parent_folder', '*' ) );
for si = 1:numel( sub_f )
if sub_f(si).name(1) =='.', continue;
end; % skip '.' and '..'
files = dir( fullfile( 'parent_folder', sub_f(si).name, '*wind*.na' ) ); % get all files in sub folder
for n = 1:numel(files)
% put your code here...
filename = files(n).name;
fid = fopen('' sub_f '/' filename '');
data=textscan(fid, '%s','delimiter','\n');
lines=data{1};
lines=lines(56:end);
for i=1:size(lines,1)
[s(i).time s(i).east s(i).north] = strread(lines{i},'%f %f %f %*f %*f %*f %*f %*f');
end
time = [s.time]';
east (:,n) = [s.east]';
north(:,n) = [s.north]';
fclose(fid);
end
end
再度、感謝します!