Is there a way to reduce compilation time for this segment?

1 vue (au cours des 30 derniers jours)
Souheil Araoud
Souheil Araoud le 8 Sep 2019
tic
iscorr = 1;
myunc = zeros(1,length(Kurzschluss.Plateaus_I));
myfunction = '(X2/X1)*(sqrt(1 - X3^2/(X2^2 * X1^2)))';
for i=1:length(mystruct.Plateaus_I)
x1 = mystruct.Plateaus_I{1,i};
x2 = mystruct.Plateaus_U{1,i};
x3 = mystruct.Plateaus_P{1,i};
myunc(i) = calculateEndUncertainty_3(x1,x2,x3,iscorr,myfunction);
end
toc
  4 commentaires
darova
darova le 8 Sep 2019
You have a lot of eval() that is why script is slow
The function below depends on f(), temp(), temp_c1(), temp_c2()
Maybe you can attach whole your project? Any description?
Souheil Araoud
Souheil Araoud le 8 Sep 2019
The whole project is way too long. This function is supposed to take 3 inputs of a function as vectors (in my case containing about 5 lightly diffefrent values) and calculate the uncertainty of the result based on the mean value of each input vector etc.. The function has been applied on 3 unidimensional cells named Plateaus_I, Plateaus_U and Plateaus_P containing a vector in each cell.

Connectez-vous pour commenter.

Réponse acceptée

darova
darova le 8 Sep 2019
See if it works

Plus de réponses (1)

Jackson Burns
Jackson Burns le 8 Sep 2019
Hi Souheil!
If you have access to the parallel computing toolbox, you can improve execution time with a parfor loop.
tic
iscorr = 1;
myunc = zeros(1,length(Kurzschluss.Plateaus_I));
myfunction = '(X2/X1)*(sqrt(1 - X3^2/(X2^2 * X1^2)))';
parfor i=1:length(mystruct.Plateaus_I)
x1 = mystruct.Plateaus_I{1,i};
x2 = mystruct.Plateaus_U{1,i};
x3 = mystruct.Plateaus_P{1,i};
myunc(i) = calculateEndUncertainty_3(x1,x2,x3,iscorr,myfunction);
end
toc
Other optimizations will likely come from improving your functions, such as calculateEndUncertainty_3. This page from MathWorks has some great advice on how to do this. I would reccomend looking at vectorization in particular, as MATLAB is extremely powerful when properly vectorized.
Hope this helps, good luck!

Catégories

En savoir plus sur Sparse Matrices dans Help Center et File Exchange

Produits


Version

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by