У меня есть следующая проблема: у меня есть код для поиска в больших файлах, содержащих данные, процесс становится слишком медленным, и даже на некоторых компьютерах он потребляет все доступные компьютерные ресурсы.Чтение внешних файлов более эффективно в MATLAB
nodo=str2num(get(handles.nodo,'string'));
PATHNAME = uigetdir('', 'Selecciona el directorio donde están los bfins');
files = dir(fullfile(PATHNAME,'*.bfin'));
curr_folder=pwd;
cd(PATHNAME);
archivo={files.name}';
for i=1:numel(archivo)
[fid{i}, errmsg]=fopen(files(i).name)
disp(errmsg);
Datos{i}=textscan(fid{i}, '%s %f %s %f %s %f ','Headerlines',2);
AllNodos{i}=Datos{1,i}{1,2};
AllTemp{i}=Datos{1,i}{1,4};
end
cd(curr_folder)
for i=1:size(AllNodos,2)
sets{i}=cat(2, AllNodos{1,i}, AllTemp{1,i});
end
for i=1:size(AllNodos,2)
vectn{i}=AllNodos{1,i};
r{i}=find(vectn{i}==nodo);
Temps{i}=AllTemp{1,i}(r{i});
end
%Write Excel File
[FileName, PathName] = uiputfile('*.xlsx', 'Escribe un archivo excel con las temperaturas...')
savingas=fullfile(PathName,FileName);
a=archivo';
B=cat(1,a,Temps);
xlswrite(savingas,[B])
e = actxserver ('Excel.Application'); %# open Activex server
ewb = e.Workbooks.Open(savingas); %# open file (enter full path!)
ewb.Worksheets.Item(1).Name = num2str(nodo); %# rename 1st sheet
ewb.Save %# save to the same file
ewb.Close(false)
e.Quit
Что код действительно должен найти и файлы расположение строки, а затем найти другую переменную (только Управлен + п операции) и воспроизводить их в листе первенствовать помощь относительно этого будет оценили.
EDIT ---- Большое спасибо за все ваши комментарии, я придумал следующий код, который экономит много времени unnecesary, что он используется для хранения брать переменных:
for i=1:num_archivo
[fid(i), errmsg]=fopen(files(i).name)
disp(errmsg);
Datos=textscan(fid(i), '%s %f %s %f','delimiter',',','HeaderLines',hl);
AllNodos=Datos(1,2);
AllTemp=Datos(1,4);
for k=1:numel(nodo)
r{i,k}=find(AllNodos{1,1}==nodo(k));
Temps{i,k}=AllTemp{1,1}(r{i,k});
end
end
Какой размер файлов, примерно и сколько файлов мы говорим? – sebastian
Файлы размером около 25 Мбайт, и около 8 файлов для обработки – user2751649