Я сделал программу, которая берет файл .csv и укладывает 3-й столбец каждого файла в соответствующее 3-е измерение массива ячеек 512x512xNumberOfFiles. Код выглядит следующим образом:
[filenames,filepath] = uigetfile('*.csv','Opening the data files','','Multiselect','on');
filenames = fullfile(filepath,filenames);
NumFiles = numel(filenames);
Pixel = cell(512,512,NumFiles);
count=0;
num_pixels = size(Pixel,1)*size(Pixel,2);
for k = 1:NumFiles
fid = fopen(char(filenames(k)));
C = textscan(fid, '%d, %d, %d','HeaderLines',1);
Pixel(count + sub2ind(size(Pixel),C{1}+1,C{2}+1)) = num2cell(C{3});
count = count + num_pixels;
fclose(fid);
end
Вызов textscan здесь занимает примерно 0,5 +/- 0,03 с на каждый файл, который я открываю (что составляет 262144 (512x512) данных), а мой вызов sub2ind занимает примерно 0,2 +/- 0,01 с на файл.
Есть ли способ уменьшить это время или это кажется наиболее оптимальным способом запуска кода? Каждый раз я буду работать примерно с 1000 файлами, поэтому ждать 8-9 минут только для получения правильных данных кажется немного чрезмерным (учитывая, что я еще не использовал его ни для чего другого).
Какие-нибудь советы?
Марк-Оливье
Row, Column, Intensity
. - person Vissenbot   schedule 14.05.2014