How to increase speed of this code
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
clc,clear,close all
format short
syms AX0
e=0.2;
OM=[1:100:20000];
ET=sqrt(-1);
A11 = 17.8*10^10;
A33 = 18.43*10^10;
A13 = 7.59*10^10;
%A56 = 1.89*10^10;
A55 = 4.357*10^10;
%A66 = 4.42*10^10;
A56=A55;
A66=A55;
AL15 = 37;
AL33 = 1.33;
AL31 = 12;
AL35 = 0.23;
GM11= 85.2;
GM33= 28.7;
RO=1.74*10^3;
NON=RO*(e^2).*(OM.^2);
NA55=A55-NON;
NA33=A33-NON;
NA11=A11-NON;
NA66=A66-NON;
AP2=NA11./NA55;
AP3=A33./NA55;
AP4=NA66./NA33;
AP44=A33./NA33;
AP24=(A13+A56);
AP25=AL15+AL31;
B1OKS=AP2-AP3*AX0;
B2OKS=AP4-AP44*AX0;
B3OKS=GM11/(AL33*AL33-GM33);
B1OK=sqrt(B1OKS);
B2OK=sqrt(B2OKS);
B3OK=sqrt(B3OKS);
APT1=AL15-AL33.*B1OKS;
APT2=AL15-AL33.*B2OKS;
APT3=AL15-AL33.*B3OKS;
AZT1=ET*AP25*B1OK./APT1;
AZT2=ET*AP25*B2OK./APT2;
AZT3=ET*AP25*B3OK./APT3;
AXT1=AP24.*AZT1./AP25;
AXT2=AP24.*AZT2./AP25;
AXT3=AP24.*AZT3./AP25;
A1=ET*A13-B1OK.*AZT1*A33-ET*AXT1*AL35+B1OK.*AXT1*AL33;
A2=ET*A13-B2OK.*AZT2*A33-ET*AXT2*AL35+B2OK.*AXT2*AL33;
A3=ET*A13-B3OK.*AZT3*A33-ET*AXT3*AL35+B3OK.*AXT3*AL33;
B1=ET*AZT1*A56-B1OK*A55-ET*AL31*AXT1+B1OK.*AXT1*AL35;
B2=ET*AZT2*A56-B2OK*A55-ET*AL31*AXT2+B2OK.*AXT2*AL35;
B3=ET*AZT3*A56-B3OK*A55-ET*AL31*AXT3+B3OK.*AXT3*AL35;
% CHARGE FREE
C1=ET*AL15-B1OK.*AZT1*AL33-B1OK.*AXT1*GM33;
C2=ET*AL15-B2OK.*AZT2*AL33-B2OK.*AXT2*GM33;
C3=ET*AL15-B3OK.*AZT3*AL33-B3OK.*AXT3*GM33;
AU= A1.*B2.*C3-A1.*B3.*C2-A2.*B1.*C3+A2.*B3.*C1+A3.*B1.*C2-A3.*B2.*C1;
W =[];
for i=1:numel(OM)
AUU=AU(:,i);
r= double(solve(AUU==0,AX0));
r1=(sqrt((A33*r)./RO));
W = [W,r1];
end
SP1=W(1,:);
SP2=W(2,:);
SP3=W(3,:);
SP4=W(4,:);
How I increase speed of runing of above code. It takes long time to run .
0 commentaires
Réponses (3)
Yongjian Feng
le 3 Juil 2021
Hello Asha,
matlab provides profile for this purpose. (https://www.mathworks.com/help/matlab/ref/profile.html).
Try it please.
Thanks,
Yongjian
Heran Wang
le 3 Juil 2021
I recommend the higher version of MATLAB.
The higher the vesion is, the faster the caculation will be.
For example, the MATLAB 2021a will two times faster than MATLAB 2017b.
Try it ~
0 commentaires
VBBV
le 12 Fév 2025
@ASHA RANI one way to speed up code is increase the step size or increment in the OM array. The variables used in the equations to solve them also contain big numbers which can consume more memory during execution. You could also vectorize the for loop if needed.
clc,clear,close all
format short
tic
syms AX0
e=0.2;
OM=[1:500:20000]; % change the step or increment in this array
%^^^^
ET=sqrt(-1);
A11 = 17.8*10^10;
A33 = 18.43*10^10;
A13 = 7.59*10^10;
%A56 = 1.89*10^10;
A55 = 4.357*10^10;
%A66 = 4.42*10^10;
A56=A55;
A66=A55;
AL15 = 37;
AL33 = 1.33;
AL31 = 12;
AL35 = 0.23;
GM11= 85.2;
GM33= 28.7;
RO=1.74*10^3;
NON=RO*(e^2).*(OM.^2);
NA55=A55-NON;
NA33=A33-NON;
NA11=A11-NON;
NA66=A66-NON;
AP2=NA11./NA55;
AP3=A33./NA55;
AP4=NA66./NA33;
AP44=A33./NA33;
AP24=(A13+A56);
AP25=AL15+AL31;
B1OKS=AP2-AP3*AX0;
B2OKS=AP4-AP44*AX0;
B3OKS=GM11/(AL33*AL33-GM33);
B1OK=sqrt(B1OKS);
B2OK=sqrt(B2OKS);
B3OK=sqrt(B3OKS);
APT1=AL15-AL33.*B1OKS;
APT2=AL15-AL33.*B2OKS;
APT3=AL15-AL33.*B3OKS;
AZT1=ET*AP25*B1OK./APT1;
AZT2=ET*AP25*B2OK./APT2;
AZT3=ET*AP25*B3OK./APT3;
AXT1=AP24.*AZT1./AP25;
AXT2=AP24.*AZT2./AP25;
AXT3=AP24.*AZT3./AP25;
A1=ET*A13-B1OK.*AZT1*A33-ET*AXT1*AL35+B1OK.*AXT1*AL33;
A2=ET*A13-B2OK.*AZT2*A33-ET*AXT2*AL35+B2OK.*AXT2*AL33;
A3=ET*A13-B3OK.*AZT3*A33-ET*AXT3*AL35+B3OK.*AXT3*AL33;
B1=ET*AZT1*A56-B1OK*A55-ET*AL31*AXT1+B1OK.*AXT1*AL35;
B2=ET*AZT2*A56-B2OK*A55-ET*AL31*AXT2+B2OK.*AXT2*AL35;
B3=ET*AZT3*A56-B3OK*A55-ET*AL31*AXT3+B3OK.*AXT3*AL35;
% CHARGE FREE
C1=ET*AL15-B1OK.*AZT1*AL33-B1OK.*AXT1*GM33;
C2=ET*AL15-B2OK.*AZT2*AL33-B2OK.*AXT2*GM33;
C3=ET*AL15-B3OK.*AZT3*AL33-B3OK.*AXT3*GM33;
AU= A1.*B2.*C3-A1.*B3.*C2-A2.*B1.*C3+A2.*B3.*C1+A3.*B1.*C2-A3.*B2.*C1;
W =[];
for i=1:numel(OM)
AUU=AU(:,i);
r= double(solve(AUU==0,AX0));
r1=(sqrt((A33*r)./RO));
W = [W,r1];
end
SP1=W(1,:);
SP2=W(2,:);
SP3=W(3,:);
SP4=W(4,:);
toc
0 commentaires
Voir également
Catégories
En savoir plus sur Get Started with MATLAB dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!