# How to speed up this calculation and remove loop(s)?

1 view (last 30 days)
Daulton_Benesuave on 29 Sep 2022
Commented: Daulton_Benesuave on 30 Sep 2022
Hello,
I have a table oFD that 10450x27 in size. I am trying to optimize this double loop to speed up the processing. For whatever reason, I'm drawing a blank how to optimize and am sure if can be computed more efficiently.
sPs = [3500:5000]';
CGE = zeros(size(sPs,1),1);
for row = 1:size(oFD,1)
for m = 1:size(sPs,1)
CG = my_function(sPs(m),oFD.PS(row),oFD.dTE(row),oFD.CIV(row));
CG2(row,m) = oFD.COI(row)*sPs(m)^2*CG;
end
end
Would someone please be able to help?
Daulton_Benesuave on 30 Sep 2022
Sorry for the late reply, had to attend to same family matters yesterday afternoon.
size(oFD,1) = 10500x27
size(sPs,1) = 1797x1

Jan on 29 Sep 2022
There is a very small potential for optimizing in the posted code:
for row = 1:size(oFD,1)
c1 = oFD.PS(row);
c2 = oFD.dTE(row);
c3 = oFD.CIV(row);
c4 = oFD.COI(row);
for m = 1:size(sPs,1)
CG = my_function(sPs(m), c1, c2, c3);
CG2(row,m) = c4 * sPs(m)^2 * CG;
end
end
I assume, the main time is spent in my_function. The profiler would reveal this.
If you post the code of my_function, further improvements are possible.
Jan on 29 Sep 2022
I do not have the Financial Toolbox. So this is a dumb guess only:
for row = 1:size(oFD,1)
c1 = oFD.PS(row);
c2 = oFD.dTE(row);
c3 = oFD.CIV(row);
c4 = oFD.COI(row);
CG = my_function(sPs, c1, c2, c3);
CG2(row, :) = c4 * sPs.^2 .* CG;
end
So can you call my_function with a vector as 1st input?

### Categories

Find more on Chebyshev in Help Center and File Exchange

R2020a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by