آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

ساخت آرایه ها برای توابع چند بعدی با دستور ndgrid در متلب

با استفاده از دستور ndgrid در متلب، می توانیم آرایه هایی را برای توابع چند بعدی بسازیم. توضیحات کامل تر را با یک مثال شرح می دهیم :

مثال

فرض کنید می خواهیم تابع دو بعدی z را به صورت یک ماتریس دو بعدی، بر حسب مقادیر مختلف x و y ، به صورت زیر بسازیم و سپس آن را رسم کنیم : \begin{align} z=\sqrt{x^2+y^2} \end{align}

بازه تعریف شده برای x را به صورت (-5,5) و بازه تعریف شده برای y را به صورت (-4,4) در نظر می گیریم. همچنین، فاصله نمونه های گسسته از این بازه ها را برابر 0.1 قرار می دهیم. برای آنکه سودمندی استفاده از دستور ndgrid را نشان بدهیم، ابتدا روش های دیگر را برای ساخت z به کار می بریم و سپس از دستور ndgrid استفاده می کنیم تا متوجه شوید که استفاده از دستور ndgrid ، ساده ترین راه است. ابتدا با روش سخت تر، این کار را انجام می دهیم :


clear all
close all
clc
 
x=-5:0.1:5;
y=-4:1.0:4;
L_x=length(x);
L_y=length(y);
z=zeros(L_x,L_y);
for nn=1:L_x
    for mm=1:L_y
        z(nn,mm)=sqrt(x(nn)^2+y(mm)^2);
    end
end
mesh(z)
xlabel('x')
ylabel('y')
zlabel('z')

دستور length ، برای تعیین طول یک بردار است و دستور zeros ، برای ساخت یک ماتریس با عناصر برابر صفر، به کار می رود. دستور mesh نیز برای رسم یک ماتریس دو بعدی، به صورت سیمی (mesh)، به کار می رود. دستورات xlabel و ylabel و zlabel ، برای تعیین عنوان برای محورهای مختصات می باشند.

نتیجه :

ساخت آرایه ها برای توابع چند بعدی با دستور ndgrid در متلب

این بار ساخت z را با دستور ndgrid انجام می دهیم :


clear all
close all
clc
 
[x,y]=ndgrid(-5:0.1:5,-4:0.1:4)
z=sqrt(x.^2+y.^2);
mesh(z)

دقت شود که علامت نقطه (.) برای آن است که هر عنصر از x و y ، به توان 2 برسد، نه اینکه کل بردار x یا بردار y ، به توان 2 برسد.

نتیجه :

ساخت آرایه ها برای توابع چند بعدی با دستور ndgrid در متلب

مشاهده می کنید که استفاده از دستور ndgrid ، حجم کدها را بسیار کم می کند و مناسبترین روش می باشد.

نکته

اگر ماتریس مورد نظرمان، بیش از 2 بعد داشته باشد، که دیگر استفاده از دستور ndgrid واجب است و روش های دیگر واقعا سخت می باشند.

نکته

شاید به نظرتان برسد که بدون دستور ndgrid و همچنین بدون حلقه های for و تنها با استفاده از علامت نقطه (.) می توانیم ساخت z را به صورت زیر انجام دهیم، اما این کار ایجاد خطا می کند :


clear all
close all
clc
 
x=-5:0.1:5;
y=-4:1.0:4;
z=sqrt(x.^2+y.^2);
mesh(z)

نتیجه :


??? Error using ==> plus
Matrix dimensions must agree.
 
Error in ==> Untitled33 at 7
z=sqrt(x.^2+y.^2);

مشاهده می کنید که یک پیام خطا نمایش داده شده است.

نویسنده علیرضا گلمکانی
شماره کلید 133
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)