Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Improve use of structure in function
조회 수: 1 (최근 30일)
이전 댓글 표시
I have the following lines:
for x=1:800
for y=1:500
[mystruct(y).I] = ...
insideFunc( ...
mystruct(y).one(x),...
mystruct(y).two.pwr(x),...
mystruct(y).three.pwr(x),...
mystruct(y).four,...
mystruct(y).five,...
mystruct(y).six...
);
end
end
It seems most of the time of the simulation is spent on those line. My guess is that getting the values from the structure (to feed the function insideFunc) consumes a lot of time (once it gets inside InsideFunc, it executes relatively fast ). My question is: is there way to improve the code by changing the way to collect the input data for the function?
댓글 수: 3
Mohammad Sami
2020년 6월 15일
Also do note that your code is overwriting the value for mystruct(y).I every time the value of x is incremented. Is this your intention ?
답변 (1개)
Walter Roberson
2020년 6월 15일
It might possibly be more efficient to use
for x=1:800
for y=1:500
sy = mystruct(y);
[mystruct(y).I] = ...
insideFunc( ...
sy.one(x),...
sy.two.pwr(x),...
sy.three.pwr(x),...
sy.four,...
sy.five,...
sy.six...
);
end
end
In the special case where the vectors such as one() and two.pwr() are the same length for all entries, then there is potentially more acceleration available by using things like
my_ones = vertcat(mystruct.one);
After which
y_ones = my_ones(:,x);
for y = 1 : 500
.... y_ones(y)
end
댓글 수: 3
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!