Я создал сценарий, который содержит цикл for, который выбирает столбцы из 533 различных файлов excel и помещает их в матрицы, чтобы их можно было сравнивать, однако процесс занимает слишком много времени (он работал в течение 3 часов вчера и даже не был на полпути!!).Как увеличить скорость этого цикла xlsread?
Я знаю, что xlsread, естественно, медленный, но кто-нибудь знает, как я могу заставить свой скрипт работать быстрее? Скрипт ниже, спасибо!
%Split the data into g's and h's
CRNum = 533; %Number of Carrington Rotation files
A(:,1) = xlsread('CR1643.xlsx','A:A'); % Set harmonic coefficient columns
A(:,2) = xlsread('CR1643.xlsx','B:B');
B(:,1) = xlsread('CR1643.xlsx','A:A');
B(:,2) = xlsread('CR1643.xlsx','B:B');
for k = 1:CRNum
textFileName = ['CR' num2str(k+1642) '.xlsx'];
A(:,k+2) = xlsread(textFileName,'C:C'); %for g
B(:,k+2) = xlsread(textFileName,'D:D'); %for h
end
Возможно, вы можете объединить много файлов в один, а затем просто прочитать с разных листов внутри него. В этом случае вам нужно будет только «открыть файл для чтения» один раз. См. [Xlsread1] (http://www.mathworks.com/matlabcentral/fileexchange/22365-function-for-faster-data-transfer-matlab-%3C-%3E-excel) для объяснения, почему он работает лучше. –
Как быстро это действительно нужно? Если вы просто позволите этому запустить вчера, то, вероятно, уже закончили. (вы можете распечатать прогресс по ходу дела, если вы решите сделать это так.) –
Я полагаю, что это не должно быть удивительно быстро, однако вчера я запускал его на своем ноутбуке, который начал чрезмерно перегреваться (это ужасный ноутбук), и поэтому я решил запустить его на компьютерах университетских кампусов сегодня, которые быстрее! Как распечатать прогресс, когда я иду? –