انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
توزیع یکنواخت دوبعدی

توزیع یکنواخت دوبعدی

#2
سلام.
کدهای متلب برای ایجاد تعدادی نقطه به صورت تصادفی (با توزیع یکنواخت) در یک دایره :



کد:
clear all
close all
clc

circle_radius=2;
circle_center=[3 4]; % [x y]

rectangle('Position',[circle_center(1)-circle_radius,circle_center(2)-circle_radius,2*circle_radius,2*circle_radius],'Curvature',[1,1]);

axis([0 7 0 7]);
axis('image');

hold on
nodes_x=0;
nodes_y=0;
for nn=1:30
    a=0;
    b=circle_radius;
    distance=a+(b-a)*rand(1);
    
    a=0;
    b=2*pi;
    teta=a+(b-a)*rand(1);
    
    nodes_x(nn)=distance*cos(teta);
    nodes_y(nn)=distance*sin(teta);
    
    plot(circle_center(1)+nodes_x,circle_center(2)+nodes_y,'rs','LineWidth',5,'MarkerSize',1.5);
end
nodes_x=nodes_x+circle_center(1)
nodes_y=nodes_y+circle_center(1)

سه خط اول کدها،برای عدم تداخل با برنامه های قبلی اجرا شده در نرم افزار متلب می باشد.
متغیر circle_radius ، همان شعاع دایره و متغیر circle_center نیز شامل مختصات نقطه مرکز دایره می باشد.
با دستور rectangle ، ابتدا دایره مورد نظر رو رسم کردیم.
با دستور axis ابتدا حدود محورهای شکل رو مشخص کردیم و سپس در خط بعدی و با تعیین مشخصه image برای دستور axis ، تعیین کرده ایم که اندازه محورهای افقی و عمودی با مقیاس یکسان نمایش داده شود (وگرنه دایره به شکل بیضی به نظر خواهد آمد).
با دستور hold on تعیین کرده ایم که شکل های بعدی، در همین پنجره شکل باز شده، رسم شوند.
مختصات نقاط تصادفی را در دو بردار nodes_x و nodes_y ذخیره خواهیم کرد.
درون حلقه for ، برای فاصله نقطه تصادفی از مرکز دایره و همچنین زاویه آن نقطه با محور، دو مقدار تصادفی ایجاد می کنیم و سپس بر اساس این دو مقدار، مختصات x و y نقطه تصادفی به دست می آید و آن را با دستور plot رسم می کنیم.
دقت شود که a و b ، حدهای بالا و پایین برای تولید عدد تصادفی توسط دستور rand می باشند.

نتیجه اجرای کد متلب بالا :

   

البته بنده مختصات x و y را ذخیره کردم، شما می توانید مقادیر فاصله از مرکز دایره و زاویه را در دو بردار ذخیره کنید (البته باید مختصات x و y نهایی رو تبدیل به مختصات قطبی بکنید تا مختصات قطبی واقعی نقاط رو داشته باشید، زیرا اون مقادیر نسبی هستند).
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط نوترینو90


پیام‌های این موضوع
توزیع یکنواخت دوبعدی - توسط نوترینو - ۱۳۹۲/۰۴/۰۱, ۰۵:۴۴ ب.ظ
RE: توزیع یکنواخت دوبعدی - توسط admin - ۱۳۹۲/۰۴/۰۱, ۰۷:۵۰ ب.ظ
RE: توزیع یکنواخت دوبعدی - توسط نوترینو90 - ۱۳۹۲/۰۴/۰۲, ۰۳:۵۹ ب.ظ
RE: توزیع یکنواخت دوبعدی - توسط admin - ۱۳۹۲/۰۴/۰۲, ۰۴:۱۲ ب.ظ
RE: توزیع یکنواخت دوبعدی - توسط بابک - ۱۳۹۴/۱۰/۲۷, ۰۹:۳۷ ب.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان