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

1 回表示 (過去 30 日間)
Souheil Araoud
Souheil Araoud 2019 年 9 月 8 日
コメント済み: Souheil Araoud 2019 年 9 月 8 日
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 Center および File ExchangeSparse Matrices についてさらに検索

製品


リリース

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by