نحوه متحرک سازی طرح ها در متلب
یک روش ساده برای متحرک سازی داده ها در متلب برای ایجاد تصاویر پویا
طرح متحرک متلب
نمودارها می توانند خسته کننده باشند. هیچ راهی برای دور زدن آن وجود ندارد. اگر علاقهمند به دادهها نیستید که دوست دارید چگونه یک داستان را با یک خط، نوار یا نقطه ساده روایت کنید، توجه به طرحها دشوار است. یک انیمیشن می تواند ابزاری عالی برای قرار دادن مخاطب در یک نمودار باشد. چشمان ما برای نگاه کردن به اجسام متحرک آموزش دیده اند، بنابراین اگر شما یک دانشمند داده یا مهندس هستید که داده های جالبی را گزارش می کنید، با تکامل آن ها در طول زمان، آن را جذاب کنید. بگذارید آن حرکت داستان را برای شما بازگو کند. در پایان این مقاله، شما چارچوبی برای توسعه انیمیشنهای جالب خواهید داشت که ممکن است به شما کمک کند ارتقای بعدی را به دست آورید، استاد خود را تحت تاثیر قرار دهید یا فقط مهارتهای خود را به عنوان یک دستکاری کننده داده بهبود ببخشید.
انجام پروژه متلب در فریلنس پروژه
در این مقاله، من فرض میکنم که شما یک پسزمینه کدنویسی متلب با ایجاد دادهها و نمودارهای اولیه دارید. این تنها راه برای متحرک سازی یک طرح نیست. این فقط بصری ترین روش است البته به نظر من. اگر می خواهید روش خود را به اشتراک بگذارید، نظر بدهید! در این مثال از خطوط سه بعدی و نقاط پراکنده با عنوان پویا استفاده خواهیم کرد. با این حال، روش را می توان به نوع طرح مورد نظر شما گسترش داد. بدون هیچ مقدمه ای، بیایید برنامه نویسی را شروع کنیم!
پاک کردن همه چیز
به نظر من بهترین تمرین پاک کردن پنجره فرمان، متغیرها و بستن تمام پنجره های شکل قبل از شروع کد اصلی است. برای انجام این کار سه خط کد زیر را اضافه می کنیم.
clc clear variables close all
ایجاد یا وارد کردن داده ها
این مرحله برای مجموعه داده شما منحصر به فرد خواهد بود. برای این مثال، ما می توانیم یک مجموعه داده بر اساس توابع ریاضی دلخواه ایجاد کنیم. ممکن است یک مجموعه داده وارد شده داشته باشید یا ممکن است داده های خود را ایجاد کرده باشید، اما اگر می خواهید این مثال را دنبال کنید، از توابعی که من در اینجا استفاده می کنم استفاده کنید. در این مثال، t زمان است (در انیمیشن بر حسب ثانیه برچسب گذاری شده است) و x، y، و z داده های مکانی برای توصیف مکان ذره هستند.
% Creating Data to Animate % Time array t = linspace(0, 6, 100);% Particle coordinates x = 4*sin(t); y = 0.5*x.^2; z = x.*cos(t);
طرح اولیه
متحرک سازی طرح ها در متلب
مرحله بعدی مشخص کردن ویژگی های طرح ما است. این شامل ایجاد یک عنوان پویا و برچسب های محور می شود. عنوان پویا شامل زمان فعلی مسیر است که به دو رقم اعشار گرد شده است (اینها ثانیه های بلادرنگ نیستند). توجه داشته باشید که من از مفسر LaTeX برای متن در اینجا استفاده می کنم. من متوجه شدم که از متن پیش فرض بهتر به نظر می رسد. در مرحله بعد، میتوانید خطوط شبکهای را اضافه کنید، محورهای خود را به یک اندازه مقیاس کنید و زاویه دید طرح سهبعدی را تغییر دهید.
% Setting up the Plot figure; hold on title(sprintf('Trajectory\nTime: %0.2f sec', t(1)), 'Interpreter', 'Latex'); xlabel('x', 'Interpreter', 'Latex') ylabel('y', 'Interpreter', 'Latex') zlabel('z', 'Interpreter', 'Latex') grid minor % Adding grid lines axis equal % Equal axis aspect ratio view(-37.5,30); % Setting viewing angle
مشاهده و ذخیره انیمیشن
برای این روش، این دو مرحله با هم ترکیب می شوند، اما در صورت تمایل می توان مرحله ذخیره را حذف کرد. اگر انیمیشن را ذخیره می کنید، باید یک متغیر نام فایل، animation.gif ایجاد کنیم. برای اینکه اندازه محورها قبل از انیمیشن درست باشد، مدار را بدون رنگ رسم می کنیم. سپس، متغیرهای خط و نقطه پراکندگی، p و m را مقداردهی اولیه می کنیم. در داخل حلقه for، میتوانیم به سادگی x، y و z را برای p و m در هر تکرار بهروزرسانی کنیم. برای خط، ما می خواهیم آن را به روز کنیم تا از نقطه اولیه به مرحله فعلی ما، k. برای نقطه پراکندگی و عنوان، ما فقط مرحله فعلی را می خواهیم. ما یک تاخیر (مکث(0.01)) اضافه می کنیم که می تواند برای تغییر سرعت انیمیشن نمایش داده شده (نه با سرعت ذخیره شده گیف.) تنظیم شود.
بلوک بعدی کد برای ذخیره است، بنابراین اگر می خواهید، می توانید قبل از این مرحله حلقه for را پایان دهید و انیمیشن خود را از پنجره شکل متلب تماشا کنید. بگذارید کمی از آنچه در این تکه کد می گذرد توضیح دهم. تابع getframe پنجره شکل را به عنوان فریم فیلم می گیرد و frame2im آن را به یک تصویر RGB تبدیل می کند. تابع rgb2ind تصویر را به یک تصویر نمایه شده با نقشه رنگی مرتبط تبدیل می کند. در اولین فهرست (در k = 1) حلقه for، فایل .gif را با تصویر نمایه شده، نقشه رنگ، نام فایل، نوع فایل، تعداد حلقه ها و تاخیر بین فریم های انیمیشن مقداردهی اولیه می کنیم. به روشی مشابه برای سایر مقادیر k، اکنون فریم انیمیشن بعدی را به فایل موجود اضافه می کنیم.
% Create file name variable filename = 'animation.gif';% Plotting with no color to set axis limits plot3(x,y,z,'Color','none');% Plotting the first iteration p = plot3(x(1),y(1),z(1),'b'); m = scatter3(x(1),y(1),z(1),'filled','b');% Iterating through the length of the time array for k = 1:length(t) % Updating the line p.XData = x(1:k); p.YData = y(1:k); p.ZData = z(1:k); % Updating the point m.XData = x(k); m.YData = y(k); m.ZData = z(k); % Updating the title title(sprintf('Trajectory\nTime: %0.2f sec', t(k)),... 'Interpreter','Latex'); % Delay pause(0.01) % Saving the figure frame = getframe(gcf); im = frame2im(frame); [imind,cm] = rgb2ind(im,256); if k == 1 imwrite(imind,cm,filename,'gif', 'Loopcount',inf,... 'DelayTime',0.1); else imwrite(imind,cm,filename,'gif','WriteMode','append',... 'DelayTime',0.1); end end
حالا می توانید این را به بقیه کد اضافه کنید و اجرا کنید. پنجره شکل شما انیمیشن شما را نشان می دهد و فایلی (به نام animation.gif) را پیدا خواهید کرد که در آن کد شما ذخیره شده است که حاوی انیمیشن شما است. اگر به درستی انجام شود، طرح شما باید چیزی شبیه به شکل زیر باشد (سرعت نقطه ممکن است متفاوت باشد):
انیمیشن مسیر
با تشکر از شما برای خواندن! اگر نمیخواهید مقالات بیشتری در زمینه MATLAB، Python و مهندسی را از دست بدهید، من را دنبال کنید و در ایمیلهای من مشترک شوید. مقالات دیگر من را نیز بررسی کنید!
دیدگاه خود را بنویسید