سلام.
با توجه به اهمیت این مدل مقداردهی ماتریس ها، من کل برنامه را نوشتم.
در نوشتن برنامه متلب مورد نظر، تعداد پرتوهایی که گفتید را با متغیر number_of_beams تعیین می کنید و ماتریس اولیه را هم به صورت ماتریسی با عناصر صفر تعریف می کنیم (با نام A و اندازه دلخواه) که بعدا ماتریسی با نام B از روی آن ساخته می شود که در آن، عناصر مربوط به پرتوها، دارای مقدار 1 می باشند. برای هر پرتو، ابتدا یک زاویه تصادفی بین 1 تا 360 درجه تولید می شود و سپس از مفهوم سینوس (sin) و کسینوس (cos) استفاده می کنیم تا متوجه شویم که کدام عناصر در آن پرتو قرار می گیرند.
کدهای متلب :
نتیجه دو بار اجرای کدهای متلب فوق :
با توجه به اهمیت این مدل مقداردهی ماتریس ها، من کل برنامه را نوشتم.
در نوشتن برنامه متلب مورد نظر، تعداد پرتوهایی که گفتید را با متغیر number_of_beams تعیین می کنید و ماتریس اولیه را هم به صورت ماتریسی با عناصر صفر تعریف می کنیم (با نام A و اندازه دلخواه) که بعدا ماتریسی با نام B از روی آن ساخته می شود که در آن، عناصر مربوط به پرتوها، دارای مقدار 1 می باشند. برای هر پرتو، ابتدا یک زاویه تصادفی بین 1 تا 360 درجه تولید می شود و سپس از مفهوم سینوس (sin) و کسینوس (cos) استفاده می کنیم تا متوجه شویم که کدام عناصر در آن پرتو قرار می گیرند.
کدهای متلب :
کد پیاچپی:
clear all
close all
clc
A=zeros(40,60);
number_of_beams=20;
A_size=size(A);
B=A;
for mm=1:number_of_beams
x=round(A_size(1)/2)
y=round(A_size(2)/2)
B(x,y)=1;
random_jahat_degree=randi(360)
random_jahat_radian=(random_jahat_degree/180)*pi
jahat_sin=sin(random_jahat_radian)
jahat_cos=cos(random_jahat_radian)
continue_while=1;
while(continue_while)
x=x+jahat_cos;
y=y+jahat_sin;
x_integer=round(x);
y_integer=round(y);
if(random_jahat_degree>=0 && random_jahat_degree<=90)
if(x_integer<=A_size(1) && y_integer<=A_size(2))
B(x_integer,y_integer)=1;
else
continue_while=0;
end
elseif(random_jahat_degree>=90 && random_jahat_degree<=180)
if(x_integer>=1 && y_integer<=A_size(2))
B(x_integer,y_integer)=1;
else
continue_while=0;
end
elseif(random_jahat_degree>=180 && random_jahat_degree<=270)
if(x_integer>=1 && y_integer>=1)
B(x_integer,y_integer)=1;
else
continue_while=0;
end
elseif(random_jahat_degree>=270 && random_jahat_degree<=360)
if(x_integer<=A_size(1) && y_integer>=1)
B(x_integer,y_integer)=1;
else
continue_while=0;
end
end
end
end
imagesc(B)
random_jahat_degree
نتیجه دو بار اجرای کدهای متلب فوق :
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.