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

1 次查看(过去 30 天)
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 个评论
darova
darova 2019-9-8
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 2019-9-8
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.

请先登录,再进行评论。

采纳的回答

darova
darova 2019-9-8
See if it works

更多回答(1 个)

Jackson Burns
Jackson Burns 2019-9-8
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!

类别

Help CenterFile Exchange 中查找有关 Sparse Matrices 的更多信息

产品


版本

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by