Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Sped up for loop

조회 수: 3 (최근 30일)
Dat Tran
Dat Tran 2016년 2월 23일
마감: MATLAB Answer Bot 2021년 8월 20일
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';

답변 (1개)

Steven Lord
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
Dat Tran
Dat Tran 2016년 2월 24일
Thank a lot!!!
Image Analyst
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!

Translated by