Capturing outputs from Loops
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Joe Bannen
am 25 Okt. 2016
Kommentiert: Steven Lord
am 25 Okt. 2016
Hi
I have produced some code but now need to look at how it performs under various changes in input. This (I hope!) is best done by using loops. Capturing the various outputs and plotting them is where I am stuck!
for n=1:0.1:10
% Various Functions
error1=
error2=
end
error1 and error2 are produced and work well in isolation. I need to vary n and capture error1 and error2 for each n. Plotting error1 and error2 against n would be the end target.
I can't quite see how to do this!
Any help in how to do this would be very welcome. How to measure and capture the tic/toc for each n would be useful as well.
Cheers
Joe
0 Kommentare
Akzeptierte Antwort
Alexandra Harkai
am 25 Okt. 2016
To keep track of error1/2 and times, you can maintain an array for each of them:
error1 = zeros(91,1);
error2 = zeros(91,1);
time = zeros(91,1);
for n=1:0.1:10
tic;
% Various Functions
m = n*10-9;
t(m) = toc;
error1(m)= <first error>;
error2(m)= <second error>;
end
plot([error1, error2, t]);
Since n is not always an integer, m=n*10-9 gives an integer indexing.
1 Kommentar
Steven Lord
am 25 Okt. 2016
Rather than multiply a decimal number to get an index (which does NOT always work) consider iterating over a vector of integer values and transforming the elements of that vector into a decimal.
for n = 1:0.1:5
n2 = 10*n-9;
disp([n, n2])
if n2 ~= round(n2)
fprintf('10*(%g)-9 returns %d%+g.\n', n, round(n2), n2-round(n2));
end
end
Compare with:
for n2 = 1:41
n = (n2+9)/10;
disp([n, n2])
if n2 ~= round(n2)
fprintf('10*(%g)-9 returns %d%+g.\n', n, round(n2), n2-round(n2));
end
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!