آموزش متحرک سازی طرح ها در متلب

  1. خانه
  2. متلب
  3. جزئیات نویسنده
فریلنسرها
آموزش متحرک سازی طرح ها در متلب

نحوه متحرک سازی طرح ها در متلب


یک روش ساده برای متحرک سازی داده ها در متلب برای ایجاد تصاویر پویا
طرح متحرک متلب

نمودارها می توانند خسته کننده باشند. هیچ راهی برای دور زدن آن وجود ندارد. اگر علاقه‌مند به داده‌ها نیستید که دوست دارید چگونه یک داستان را با یک خط، نوار یا نقطه ساده روایت کنید، توجه به طرح‌ها دشوار است. یک انیمیشن می تواند ابزاری عالی برای قرار دادن مخاطب در یک نمودار باشد. چشمان ما برای نگاه کردن به اجسام متحرک آموزش دیده اند، بنابراین اگر شما یک دانشمند داده یا مهندس هستید که داده های جالبی را گزارش می کنید، با تکامل آن ها در طول زمان، آن را جذاب کنید. بگذارید آن حرکت داستان را برای شما بازگو کند. در پایان این مقاله، شما چارچوبی برای توسعه انیمیشن‌های جالب خواهید داشت که ممکن است به شما کمک کند ارتقای بعدی را به دست آورید، استاد خود را تحت تاثیر قرار دهید یا فقط مهارت‌های خود را به عنوان یک دستکاری کننده داده بهبود ببخشید.

انجام پروژه متلب در فریلنس پروژه

در این مقاله، من فرض می‌کنم که شما یک پس‌زمینه کدنویسی متلب با ایجاد داده‌ها و نمودارهای اولیه دارید. این تنها راه برای متحرک سازی یک طرح نیست. این فقط بصری ترین روش است البته به نظر من. اگر می خواهید روش خود را به اشتراک بگذارید، نظر بدهید! در این مثال از خطوط سه بعدی و نقاط پراکنده با عنوان پویا استفاده خواهیم کرد. با این حال، روش را می توان به نوع طرح مورد نظر شما گسترش داد. بدون هیچ مقدمه ای، بیایید برنامه نویسی را شروع کنیم!


پاک کردن همه چیز

به نظر من بهترین تمرین پاک کردن پنجره فرمان، متغیرها و بستن تمام پنجره های شکل قبل از شروع کد اصلی است. برای انجام این کار سه خط کد زیر را اضافه می کنیم.

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 و مهندسی را از دست بدهید، من را دنبال کنید و در ایمیل‌های من مشترک شوید. مقالات دیگر من را نیز بررسی کنید!

تگ ها : طرح ها

سینا

نویسنده از: 1401/05/16

دیدگاه خود را بنویسید

سه + دو =