Is the Zeroes Function here necessary?

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 件のコメント

Stephen23
Stephen23 2018 年 2 月 21 日
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:

サインインしてコメントする。

 採用された回答

Greg
Greg 2018 年 2 月 21 日

0 投票

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 件のコメント

Andew
Andew 2018 年 2 月 21 日
thanks!
Greg
Greg 2018 年 2 月 21 日
Happy to help.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMATLAB についてさらに検索

タグ

質問済み:

2018 年 2 月 21 日

コメント済み:

2018 年 2 月 21 日

Community Treasure Hunt

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

Start Hunting!

Translated by