مشاهده تغییرات عناصر یک ماتریس به صورت فیلم (انیمیشن)
قبلا دستور imagesc را معرفی کردیم و شرح دادیم که چگونه این دستور برای نمایش مقادیر عناصر یک ماتریس، به صورت یک تصویر، به کار می رود. اما در برخی مواقع نیاز داریم که نحوه تغییرات عناصر ماتریس را در حین اجرای برنامه (معمولا درون حلقه های for) به صورت تصاویر پشت سرهم که به صورت یک فیلم در می آیند، مشاهده کنیم. البته باید توجه داشته باشید که فایلی با فرمت های رایج فیلم، در خروجی نخواهیم داشت و تنها نحوه مشاهده عکس ها را به گونه ای تنظیم می کنیم که همچون یک فیلم، قابل مشاهده باشد. به مثال زیر توجه کنید :
با دستور (10,10) ones ، یک ماتریس با 10 ردیف و 10 ستون می سازیم که تمامی عناصر آن برابر 1 باشد. تغییرات عناصر ماتریس به این صورت است که در هر گام از حلقه با پارامتر p ، مقدار عددی هر عنصر ماتریس، در مجموع شماره سطر و شماره ستون خود، ضرب می شود. دستور imagesc ، مقادیر عناصر ماتریس را به صورت یک تصویر نمایش می دهد و دستور colorbar ، برای این است که رنگ متناظر با هر عدد، در کنار تصویر، نمایش داده شود. نقش دستور (0.02)pause ، بسیار مهم است، این دستور باعث می شود که نرم افزار متلب، در اجرای ادامه برنامه، زمانی برابر با 0.02 ثانیه، توقف داشته باشد، زیرا اگر این توقف وجود نداشته باشد، آنگاه زمان نمایش تصاویر به صورت پی در پی، آنقدر سریع است که دیگر نمی توانید تغییرات عناصر ماتریس را مشاهده کنید. برای سریع تر دیدن تغییرات، می توانید عدد درون پرانتز مربوط به دستور pause را کاهش دهید.
A=ones(10,10);
for p=1:2
for m=1:10
for n=1:10
A(m,n)=A(m,n)*(m+n);
imagesc(A)
colorbar
pause(0.02)
end
end
end
نتیجه :
متلب پنجره ای را باز کرده و نحوه تغییرات عناصر ماتریس A به صورت یک فیلم (عکس های پی در پی) نمایش داده می شود. 2 تا از عکس ها را برای نمونه در زیر نمایش می دهیم :
نتیجه را به صورت یک فایل gif نمایش می دهیم (صبر کنید تا فایل به صورت کامل بارگذاری شود تا بتوانید سرعت اصلی انیمیشن را ببینید) :
در همان مثال قبل، می توانیم زمان مشاهده تصویر تغییرات را زمانی بگیریم که یک بار تمامی عناصر ماتریس، مقادیر جدیدی پیدا کرده اند. برای این منظور، محل دستور های مخصوص نمایش تصویر را باید تغییر دهیم. همچنین حداکثر میزان پارامتر p را به 15 تغییر می دهیم :
A=ones(10,10);
for p=1:15
for m=1:10
for n=1:10
A(m,n)=A(m,n)*(m+n);
end
end
imagesc(A)
colorbar
pause(0.02)
end
نتیجه :
متلب پنجره ای را باز کرده و نحوه تغییرات عناصر ماتریس A را (پس از هر بار تغییر کامل ماتریس) به صورت یک فیلم (عکس های پی در پی) نمایش می دهد.