複数のファイルのデータを 1 つのマトリックスに連結する必要があります。これまでのところ、データのロードをテストしてきた方法は、次のようなものです。
fid = fopen('data01.txt', 'r');
raw = textscan(fid, '%d/%d/%d %d:%d:%f %f %f %f %d', 'delimiter', ',');
m = cellfun(@double, raw, 'UniformOutput', false);
value_of_interest = m{:,10}
...しかし、ディスク上にあるデータ セットは多数のファイルであり、すべてが 1 つのディレクトリ内に存在します。スクリプトをそこに置くのではなく、このディレクトリの特定のパスを参照したいと思います。上記のフォルダー内のすべてのファイルのすべてのデータをロードするようにスクリプトを変更するにはどうすればよいですか?
これまでのところ、私はこれを持っています:
dirname = uigetdir;
files = dir(dirname);
fileIndex = find(~[files.isdir]);
for i = 1:length(fileIndex)
fileName = files(fileIndex(i)).name;
fid = fopen(fileName, 'r');
raw = textscan(fid, '%d/%d/%d %d:%d:%f %f %f %f %d', 'delimiter', ',');
time = [m{:,4}, m{:,5}, m{:,6}]; %needs to contain a float
converted_time = ((m{:,4} * 3600.0) + (m{:,5} * 60.0) + m{:,6}); %hh:mm:ss -> seconds
values = power(m{:,10}, 2);
values(values <= thresh) = 0;
% need to concat into the var 'values' here... also need to accumulate the time variable
end
plot(converted_time, values);
...しかし、私は 2 つを一緒にする必要があります。
編集:メモリが不足する可能性があることに言及する必要があります。これについては、選択した回答に対する以下のコメントで後で説明します。