Is the Zeroes Function here necessary?

1 回表示 (過去 30 日間)
Andew
Andew 2018 年 2 月 21 日
コメント済み: Stephen23 2018 年 2 月 21 日
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 日
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 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by