Here is the code:
nuclei=zeros(1,100);
t=nuclei;
nuclei(1)=input('Enter initial number of nuclei: ');
t(1)=0;
t_c=input('Enter time constant: ');
dt=input('Time step: ');
for i=1:99
nuclei(i+1)=nuclei(i)-(nuclei(i)/t_c)*dt;
t(i+1)=t(i)+dt;
end
plot(t,nuclei,'-ok','MarkerFaceColor','k')
xlabel('Number of Nuclei','FontWeight','bold')
ylabel('time(s)','FontWeight','bold')
title('Radioactive Decay Number of nuclei versus time')
str1=['Time Constant= ' num2str(t_c) ' s '];
str2=['Time Step= ' num2str(dt) ' s'];
text(t(50),nuclei(10),str1,'FontWeight','bold','FontSize',14)
text(t(50),nuclei(20),str2,'FontWeight','bold','FontSize',14)
I have plots that result from this code, and this code with that first line removed, and they appear to be the same. Is that first line necessary? If so, why?

1 Kommentar

Stephen23
Stephen23 am 21 Feb. 2018
No code is "necessary".
In this situation zeros makes that code much more efficient: array preallocation means that MATLAB does not waste time moving data around in memory:

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Greg
Greg am 21 Feb. 2018

0 Stimmen

It's called pre-allocation. It is always a good idea to pre-allocate. If you need a quick proof, throw a tic / toc around the code with and without the zeros line. It'll get noticeably faster as the number of loop iterations grows.

2 Kommentare

Andew
Andew am 21 Feb. 2018
thanks!
Greg
Greg am 21 Feb. 2018
Happy to help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Gefragt:

am 21 Feb. 2018

Kommentiert:

am 21 Feb. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by