Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Sped up for loop
조회 수: 3 (최근 30일)
이전 댓글 표시
Dear all,
Please show me how to speed up the for loops below. It took me a day to run for M=50.
I would appreciate your help! Best, Dat
clear all;
clc;
M = 20;
A_pro_cct = zeros(16,M);
tm = zeros(16,16);
s = zeros(17,4);
for N = 1:M
for ii = 1:N
filename = 'C:\Users\Dat\Documents\CT_TMs_counties.xlsx';
sheet = ii;
tm = xlsread(filename,sheet,'b2:q17');
s = xlsread(filename,sheet,'h21:k37');
for i = 1:16
pro_cct = s(i,1)*tm(i,9)+tm(i,3)*s(i,3) + tm(i,1)*s(i,1);
A_pro_cct (i,N) = pro_cct;
end
end
end
AA = A_pro_cct';
댓글 수: 0
답변 (1개)
Steven Lord
2016년 2월 23일
You're reading the Microsoft Excel spreadsheet file M*(M+1) times in your double nested FOR loop. Instead pull those lines of code outside the double FOR loops, read the file into a variable once (or once per sheet) and refer to the appropriate section of that variable inside the loop.
댓글 수: 5
Image Analyst
2016년 2월 24일
As I understand it, if you have R2015b or later, the Excel reading will be a lot faster because it does not shutdown the Excel server after xlsread(), and so does not have to launch it again either.
And cell arrays take a huge amount of memory and a lot of overhead. You don't even need to use cell arrays at all. Just use regular numerical arrays.
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!