help with nested loops
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi all, I know I am not quite getting this right but I am trying to run a nested loop that will output an array of temperatures for every eps value. If I fix the eps value the script will run fine over the range of temperatures but I would like to save time and be able to vary temperature and eps. Any help would be greatly appreciated. Do I need to pre allocate zero arrays with as many rows as there are eps values?
%range of temperatures
Texplore=[0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1400 1600 1800 2000];
epsexplore=[1e-7 1e-8 1e-9 1e-10 1e-11];
%pre allocate stress array
pl=zeros(17,1);
qz=zeros(17,1);
plD=zeros(17,1);
%solve for stress
for i=1:length(Texplore)
Tuse=Texplore(i);
for j=length(epsexplore)
epsuse=epsexplore(j);
pl(i,j)=((epsuse)/(A*exp(-Q/(R*Tuse))))^(1/n);
qz(i,j)=((epsuse)/(A1*exp(-Q1/(R*Tuse))))^(1/n1);
plD(i,j)=((epsuse)/(A2*exp(-Q2/(R*Tuse))))^(1/n);
end
end
1 Kommentar
Voss
am 13 Mär. 2025
Bearbeitet: Voss
am 9 Mai 2025
"If I fix the eps value the script will run fine over the range of temperatures but I would like to save time and be able to vary temperature and eps."
Here, j takes one value, which is length(epsexplore):
for j=length(epsexplore)
To have j span the length of epsexplore would be:
for j=1:length(epsexplore)
Akzeptierte Antwort
Star Strider
am 13 Mär. 2025
You don’t actually need nested loops (or for that matter, any loops) to calculate those in MATLAB.
Texplore=[0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1400 1600 1800 2000];
epsexplore=[1e-7 1e-8 1e-9 1e-10 1e-11];
[Tuse,epsuse] = ndgrid(Texplore, epsexplore);
A = rand
A1 = rand
A2 = rand
Q = rand
Q1 = rand
Q2 = rand
R = rand
n = randi(10)
n1 = randi(10)
pl = ((epsuse)./(A*exp(-Q./(R*Tuse)))).^(1/n);
qz = ((epsuse)./(A1*exp(-Q1./(R*Tuse)))).^(1/n1);
plD = ((epsuse)./(A2*exp(-Q2./(R*Tuse)))).^(1/n);
figure
surf(Tuse,epsuse,pl)
grid on
colormap(turbo)
figure
surf(Tuse,epsuse,qz)
grid on
colormap(turbo)
figure
surf(Tuse,epsuse,plD)
grid on
colormap(turbo)
This aproach uses vectorization and element-wise division and exponentiation.
.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Operators and Elementary Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!